为啥 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:
对于选择框、复选框和单选按钮,当用户使用鼠标进行选择时会立即触发该事件,但对于其他元素类型,该事件会延迟到元素失去焦点。
如果您需要知道值何时立即更改,请使用keyup
或keypress
。
【讨论】:
好问题,好答案:D 非常感谢您提供的前期见解和解决方案。根据您使用keypress()
事件的建议,我遇到了完美的解决方案。谢谢!
@JayMarz 没问题,很高兴为您提供帮助
@RoryMcCrossan 哦,只是一个小故障伙伴。 keypress
、keyup
和 keydown
事件在按下某个键后不会触发。它在触发之前等待下一个键被按下。在这种情况下,我无法正确比较来自两个元素的两个变量。就像我在第一个密码字段中输入 test
一样,我必须在验证密码字段中输入 5 个字符,然后才能正确验证值。我该如何调和呢?
keyup
应该可以根据需要工作:jsfiddle.net/wd38m/1。如果您在该字段中输入 password
,您应该会在输入最终的 d
时看到标志更改为 true
。以上是关于为啥 jQuery 的 .change() 事件只在鼠标右键单击时触发?的主要内容,如果未能解决你的问题,请参考以下文章
layui如何自动触发change事件,可以用jquery的change吗?