jQuery onChange事件未在表单输入时触发,仅点击生效,求解决方案
解决jQuery监听文本输入时change事件不生效的问题
嘿,我完全懂你遇到的困惑!change事件在文本输入框上的触发逻辑确实容易让人踩坑——它只有在输入框失去焦点,并且内容确实发生了改变的时候才会触发,这就是为什么你只有点击输入框(其实是后续失去焦点时)才看到alert弹出,而输入文本过程中毫无反应。
正确的解决方案:使用input事件
如果想要在用户输入文本的实时过程中触发Ajax调用,input事件才是你的最佳选择。它会捕获所有导致输入框内容变化的操作:键盘输入、粘贴(不管是键盘还是右键菜单)、甚至是浏览器自动填充,都能实时响应。
把你的jQuery代码改成这样就行:
$("#matrix").on('input', function(){ alert('hi') });
备选兼容方案(针对老旧浏览器)
如果你的项目需要兼容IE9及更早的浏览器,可以用keyup事件作为替代,但要注意它的局限性:只能捕获键盘输入的变化,右键粘贴、自动填充这类非键盘操作不会触发。示例代码:
$("#matrix").on('keyup', function(){ alert('hi') });
再聊聊change和blur的区别
你说这俩事件特性相似,其实是有道理的:blur是输入框失去焦点就触发,不管内容有没有变化;而change是失去焦点+内容变化才触发,所以两者确实有交集,但触发条件完全不同,这也是你这次遇到问题的核心原因。
内容的提问来源于stack exchange,提问作者Giacomo Maccanti
相关产品推荐
相关产品推荐

