如果附加了一个事件,如何防止在下拉列表中触发jquery事件

时间:2010-11-23 15:42:09

标签: jquery asp.net-mvc jquery-ui onchange

我的网页上有一个下拉列表,其中一个jquery事件附加到change事件。在更改时,我使用ajax在弹出窗口中加载局部视图。

当用户使用键盘浏览项目列表但是然后单击页面另一部分上的链接时,我会立即看到我的弹出窗口。这显然发生在用户点击页面上其他位置的链接时,首先在下拉列表中触发更改事件。

有没有解决这个问题的巧妙解决方案?一个简单的解决方案是在keyup上触发事件,但我不希望发生这种功能。

以下是代码的更改事件代码段

$('#lookup').change(function()
{
    $.get(..//load template

4 个答案:

答案 0 :(得分:1)

如果是ajax调用,你的ajax调用有可能被缓存。确保您正在禁用缓存。像“cache:false”这样的东西

答案 1 :(得分:0)

无法停止事件,因为在任何情况下都会触发更改事件。

一种可能性是在事件触发和$ .get方法的实际调用之间设置一定的超时,以便考虑你的情况,但肯定不是一个优雅的解决方案。

否则,只有当某个其他元素获得焦点时才可以调用返回函数(例如,如果在下拉列表之后有文本框)。

我不太关心它,因为看起来你的弹出窗口显示在Dropdown变化上。如果它不重要,你可能会在右下角的右侧显示一个帮助按钮,在按钮点击时弹出你的窗口。

答案 2 :(得分:0)

我对你的问题感到有些困惑。但假设“变化”不是真正的变化,我认为你可以为“lastSelected”保留一个变量,并且当发生变化时,检查它。如果它是相同的,请忽略它。如果它不同,请关闭Ajax请求并更新“lastSelected”的值。

答案 3 :(得分:0)

没有找到我喜欢或使用我的风格干净的解决方案,因此决定在'change'和'keyup'事件上捕获触发器以避免这种情况。