我有一个使用dropdownchecklist jquery插件的选择框。我希望只有在选择框丢失焦点后才会触发更改事件。
在选择列表中的项目后,jquery .change事件会立即触发选择框。在我的情况下,由于可以选择多个项目,我只希望在焦点丢失后触发更改,假设甚至选择了新项目。
我以为我可以做某种链接,比如$('#MySelect')。change()。blur(...)或者某种嵌套或者什么东西,但我真的不能让它像我期待。
有什么想法吗?
答案 0 :(得分:3)
也许你想简单地为blur事件提供一个处理程序并完全忽略change事件。然后,您必须自己跟踪更改。一个建议是让change事件只是更新一个变量,告诉你发生了更改而没有做任何其他事情。然后模糊事件可以这样做:
$('#yourselect').blur(function(){
if(changesOccurred){
//do something about it
changeOccurred = false;
}
});
$('#yourselect').change(function(){
changeOccurred = true;
});
答案 1 :(得分:1)
你应该能够做到这一点。
$('select').focus(function() {
$(this).data( 'startValue', $(this).val() );
}
$('select').change(function(event) {
event.preventDefault();
});
$('select').blur(function() {
if ( $(this).data('startValue') == $(this).val() ) {
//nothing has changed
} else {
//something's different
}
}
答案 2 :(得分:0)
下拉列表更改时会触发change
事件。你不能改变它(在这种背景下这是一个有趣的句子)
您必须设置代码,以便通常在change
上执行的所有功能都在blur
事件上执行。
更新:如果您提供了一些代码和解释,应该在什么时候执行,这将更容易为您提供帮助。