输入"改变"保证在表格之前运行的事件"提交"?

时间:2018-04-02 16:54:26

标签: javascript html javascript-events onchange onsubmit

我们假设我们有一个像这样的HTML:

<form id="myform" action="http://google.com/">
    Your Email: <input type="email" id="email">
    <input type="submit" name="">
</form>

我做了一些测试,并输入#mail&#34;更改&#34;事件总是出现在表单#myform&#34;提交&#34;事件

是否应该在所有主流浏览器中都出现这种情况?

1 个答案:

答案 0 :(得分:1)

是和否。

从实际角度来看,所有浏览器都会在change之前处理submit(禁止直接由JavaScript触发调用),这是一个非常安全的选择。

&#13;
&#13;
document.querySelector('form').addEventListener('submit', e => { console.log('submit'); e.preventDefault(); });
document.querySelector('input').addEventListener('change', () => console.log('change'));
&#13;
<form>
  <input>
</form>
&#13;
&#13;
&#13;

那就是说,没有任何特定的规范要求这种行为。最接近的可能是HTML 5 Draft Spec Event Loop,但它似乎没有指定任何有关表单事件顺序的内容。

所有这一切,我可能会避免任何超级明确要求changesubmit之前解雇的内容。我认为它将用于验证。我可能会让submit函数调用验证函数而不调用change