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使用on给input绑定focus事件和alert组合后无限弹出
在文本框失去焦点后 在文本框后面出现文字提示 用jquery怎么写