jQuery失去焦点触发事件,现在会出现alert循环出现的状况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery失去焦点触发事件,现在会出现alert循环出现的状况相关的知识,希望对你有一定的参考价值。

当用户名不输入的时候,会触发事件,但是当我将alert弹出框点击取消后这个alert会循环出现,为什么?... 当用户名不输入的时候,会触发事件,但是当我将alert弹出框点击取消后这个alert会循环出现,为什么? 展开

参考技术A 输入框失去焦点后,你又给它赋予焦点,并且弹出对话框,你再点击取消,输入框又失去焦点,然后它又被赋予焦点.....这就是个死循环,所以这个alert会循环出现。

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

【中文标题】如何使 select .change 事件在失去焦点之前不会触发(最好使用 jquery)?【英文标题】:How do I make a select .change event not fire until it loses focus (using jquery preferably)? 【发布时间】:2010-02-12 19:33:51 【问题描述】:

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

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

我以为我可以进行某种链接,例如 $('#MySelect').change().blur(...) 或某种嵌套之类的东西,但我真的无法让它像这样工作我会期待的。

有什么想法吗?

【问题讨论】:

【参考方案1】:

也许您只想为 blur 事件提供一个处理程序而完全忽略 change 事件。然后,您必须自己跟踪更改。一个建议是让 change 事件简单地更新一个变量,告诉您发生了更改,而无需执行任何其他操作。然后模糊事件可以这样做:

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

 );


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

【讨论】:

【参考方案2】:

你应该能够做到这一点。

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

【讨论】:

【参考方案3】:

当下拉列表更改时,change 事件会被触发。你无法改变它(在那种情况下多么有趣的一句话)。 您必须设置您的代码,以便通常应该在 change 上执行的所有功能都在 blur 事件上执行。

更新:如果你提供一些代码和解释什么时候应该执行,它会更容易帮助你。

【讨论】:

是的,我知道,但我不希望这一切都发生在模糊事件中。我不希望每次下拉模糊时都发生部分回发,我只希望在进行实际更改时运行特定代码。在不知道它是否既模糊又改变的情况下,我不知道何时运行代码。

以上是关于jQuery失去焦点触发事件,现在会出现alert循环出现的状况的主要内容,如果未能解决你的问题,请参考以下文章

jquery 怎么让输入框失去焦点

jquery使用on给input绑定focus事件和alert组合后无限弹出

在文本框失去焦点后 在文本框后面出现文字提示 用jquery怎么写

失去焦点事件啥意思

js文本域执行onkeyup事件后会失去焦点,怎么解决失去焦点的问题?

jQuery easyui 中 combobox的事件处理吗