JavaScript change事件监听器在input元素上无效问题求助
input的change事件并非仅适用于select标签
change事件不是select标签专属,包括input、textarea在内的绝大多数表单控件都支持该事件。你觉得它无效,是因为input的change事件触发时机和keyup完全不同:
- 对于文本类input(text、email、number等):只有当输入框失去焦点,且内容确实发生了改变时,change事件才会触发
- 而keyup是每按下并松开一次按键就触发,属于实时响应的事件
你的代码本身没有问题,只是触发条件没满足——比如你在input里输入内容后,只要不点击输入框外部或者切换到其他控件,change事件就不会执行。
如果你的需求是实时验证输入内容,推荐使用input事件,它会在input内容发生任何变化时立即触发(包括键盘输入、粘贴、鼠标拖拽输入等场景),代码修改如下:
const inputs = document.querySelectorAll('.input'); inputs.forEach(input => { input.addEventListener('input', function (e) { console.log(e.target.value); }); });
如果只需要在用户完成输入(失去焦点)且内容有变更时才验证,那保留原来的change事件即可,操作时记得让input失去焦点就能触发。
内容的提问来源于stack exchange,提问作者Manjesh R V
相关产品推荐
相关产品推荐

