为啥 jQuery 的 .change() 事件只在鼠标右键单击时触发?

Posted

技术标签:

【中文标题】为啥 jQuery 的 .change() 事件只在鼠标右键单击时触发?【英文标题】:Why jQuery's .change() event only fires on right-mouse click?为什么 jQuery 的 .change() 事件只在鼠标右键单击时触发? 【发布时间】:2014-07-26 04:11:42 【问题描述】:

我在修改输入元素时遇到 jquery 的 .change() 事件问题。据说,每次我对所述元素进行实时更改时,都会触发此事件。但就我而言,它仅在我按下右键单击按钮后才会触发。这是我在laravel 框架上的代码:

HTML:

<div class="form-group">
    <label for="verifyPassword"><h4>Verify Password:</h4></label>
     Form::password('password',array('class'=>'span3 form-control', 'id'=>'verify-password', 'placeholder'=>'Verify Password')) 
</div>

JS:

$(document).ready(function()
        $( "#verify-password" ).change(function() 
          alert( "Text Changed!" );
        );
);

希望有人能帮我找出问题所在,并为我提供完美的解决方案。谢谢。

【问题讨论】:

【参考方案1】:

对于文本字段,change 事件在元素失去焦点(并且对其值发生更改)之前不会触发。

来自 API:

对于选择框、复选框和单选按钮,当用户使用鼠标进行选择时会立即触发该事件,但对于其他元素类型,该事件会延迟到元素失去焦点。

如果您需要知道值何时立即更改,请使用keyupkeypress

【讨论】:

好问题,好答案:D 非常感谢您提供的前期见解和解决方案。根据您使用keypress() 事件的建议,我遇到了完美的解决方案。谢谢! @JayMarz 没问题,很高兴为您提供帮助 @RoryMcCrossan 哦,只是一个小故障伙伴。 keypresskeyupkeydown 事件在按下某个键后不会触发。它在触发之前等待下一个键被按下。在这种情况下,我无法正确比较来自两个元素的两个变量。就像我在第一个密码字段中输入 test 一样,我必须在验证密码字段中输入 5 个字符,然后才能正确验证值。我该如何调和呢? keyup 应该可以根据需要工作:jsfiddle.net/wd38m/1。如果您在该字段中输入 password,您应该会在输入最终的 d 时看到标志更改为 true

以上是关于为啥 jQuery 的 .change() 事件只在鼠标右键单击时触发?的主要内容,如果未能解决你的问题,请参考以下文章

jquery ajaxfileupload为啥会刷新页面

layui如何自动触发change事件,可以用jquery的change吗?

jquery change事件不触发的问题

jquery change事件 在弹窗中无效

jquery 当用回车键执行change事件后在IE8下面焦点自动跳转

JQuery两种失焦事件的使用