【发布时间】:2019-04-01 13:04:29
【问题描述】:
如何为所有form 元素使用onChange 或类似事件?我不想为每个字段单独使用onChange。
【问题讨论】:
-
为什么不呢?在 HTML 事件中,您每次都可以调用相同的函数,因此复制粘贴可能不超过 20 个字符并编写 1 个函数。
-
this 有帮助吗?
标签: javascript
如何为所有form 元素使用onChange 或类似事件?我不想为每个字段单独使用onChange。
【问题讨论】:
标签: javascript
您可以在form 元素上使用change 事件:
var form = document.querySelector('form');
form.addEventListener('change', function() {
alert('Hi!');
});
【讨论】:
form 属性)不会将事件冒泡到表单元素。为了适应这种情况,我们可以改为将事件侦听器添加到 document.body 并检查 event.target.form 是否匹配预期的形式。
如果您使用的是 jQuery,您可以在表单元素上使用 change 事件,因为在 jQuery 中该事件会冒泡。
$('#formId').change(function(){...});
如果您使用纯 javascript,则更改事件不会冒泡(至少不会跨浏览器)。因此,您必须分别将事件处理程序附加到每个输入元素:
var inputs = document.getElementsByTagName("input");
for (i=0; i<inputs.length; i++){
inputs[i].onchange = changeHandler;
}
(当然,您必须对所有选择和文本区域执行类似的操作)
【讨论】:
form onchange了。
formElement.addEventListener('change', doSomething); 适用于所有主流浏览器。