如何使select.change事件在失去焦点之前不触发(最好使用jquery)?

如何使select.change事件在失去焦点之前不触发(最好使用jquery)?,jquery,events,select,Jquery,Events,Select,我有一个使用dropdownchecklist jquery插件的选择框。我只想在选择框失去焦点后触发更改事件 在列表中选择一个项目后,jquery.change事件立即为选择框触发。在我的情况下,由于可以选择多个项目,我只希望在失去焦点后触发更改,假设甚至选择了新项目 我想我可以做一些链接,比如$('#MySelect').change().blur(…)或者某种嵌套之类的,但我不能真正让它像我期望的那样工作 有什么想法吗?当下拉列表更改时,change事件被触发。你不能改变这一点(在这种情况

我有一个使用dropdownchecklist jquery插件的选择框。我只想在选择框失去焦点后触发更改事件

在列表中选择一个项目后,jquery.change事件立即为选择框触发。在我的情况下,由于可以选择多个项目,我只希望在失去焦点后触发更改,假设甚至选择了新项目

我想我可以做一些链接,比如$('#MySelect').change().blur(…)或者某种嵌套之类的,但我不能真正让它像我期望的那样工作


有什么想法吗?

当下拉列表更改时,
change
事件被触发。你不能改变这一点(在这种情况下,这句话真有趣)。
您必须设置代码,以便在
change
事件中执行通常应在
blur
上执行的所有功能


更新:如果您提供了一些代码和解释,说明什么时候应该执行,这将更容易帮助您。

也许您只想为模糊事件提供一个处理程序,而完全忽略更改事件。然后,您必须自己跟踪更改。一个建议是让变更事件简单地更新一个变量,该变量告诉您变更是在不做任何其他事情的情况下发生的。然后,“模糊”事件可以执行以下操作:

 $('#yourselect').blur(function(){
     if(changesOccurred){
        //do something about it
        changeOccurred = false;
     }

 });


 $('#yourselect').change(function(){
     changeOccurred = true;
});

你应该能够做到这一点

$('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
    }
}

是的,我知道,但我不想所有的事情都发生在模糊事件中。我不希望每次下拉列表模糊时都出现部分回发,我只希望在进行实际更改时运行特定代码。如果不知道它是否是模糊的和变化的,我就无法判断何时运行代码。