我们假设我们有一个像这样的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;事件
是否应该在所有主流浏览器中都出现这种情况?
答案 0 :(得分:1)
是和否。
从实际角度来看,所有浏览器都会在change
之前处理submit
(禁止直接由JavaScript触发调用),这是一个非常安全的选择。
document.querySelector('form').addEventListener('submit', e => { console.log('submit'); e.preventDefault(); });
document.querySelector('input').addEventListener('change', () => console.log('change'));
&#13;
<form>
<input>
</form>
&#13;
那就是说,没有任何特定的规范要求这种行为。最接近的可能是HTML 5 Draft Spec Event Loop,但它似乎没有指定任何有关表单事件顺序的内容。
所有这一切,我可能会避免任何超级明确要求change
在submit
之前解雇的内容。我认为它将用于验证。我可能会让submit
函数调用验证函数而不调用change
。