<!DOCTYPE html>
<meta charset=utf-8>
<title>input type button</title>
<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org">
<link rel=help href="https://html.spec.whatwg.org/multipage/#button-state-(type=button)">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<form id=f1>
  <input type=button id=b1 name=b1>
</form>
<form>
  <input id=i1 value="foo">
  <input type=button id=b2 name=b2>
</form>
<form>
  <input type=radio id=i2 checked name=b3>
  <input type=button id=b3 name=b3>
</form>
<form>
  <input type=checkbox id=i3>
  <input type=button id=b4 name=b4>
</form>

<script>
  var t = async_test("clicking on button should not submit a form"),
      b1 = document.getElementById('b1'),
      b2 = document.getElementById('b2'),
      b3 = document.getElementById('b3'),
      b4 = document.getElementById('b4'),
      i1 = document.getElementById('i1'),
      i2 = document.getElementById('i2'),
      i3 = document.getElementById('i3');

  test(function(){
    assert_false(b1.willValidate);
  }, "the element is barred from constraint validation");

  document.getElementById('f1').onsubmit = t.step_func(function(e) {
    e.preventDefault();
    assert_unreached("form has been submitted");
  });

  t.step(function() {
    b1.click();
  });
  t.done();

  test(function(){
    i1.value = "bar";
    b2.click();
    assert_equals(i1.value, "bar");
  }, "clicking on button should not reset other form fields");

  test(function(){
    assert_true(i2.checked);
    b3.click();
    assert_true(i2.checked);
  }, "clicking on button should not unchecked radio buttons");

  test(function(){
    assert_false(i3.indeterminate);
    b4.click();
    assert_false(i3.indeterminate);
  }, "clicking on button should not change its indeterminate IDL attribute");
</script>
