在Internet Explorer 9中多次触发Click事件

时间:2015-09-15 04:00:29

标签: javascript jquery asp.net-mvc jqgrid

我有一个超链接:

<a href="#" class="search">Search</a>

点击hyperlink我会弹出,然后我会在 jqgrid <的弹出式对话框中使用高级搜索按钮执行高级搜索/强>

点击高级搜索按钮后,它将调用控制器并返回网格。

我的button's代码是:

<a id="searchResults" class="btn btn-primary">Advance Search</a>

我的jquery是:

 $('.search').on('click', function () {
      search();
  });


function search() {
    $('#searchResults').unbind('click').on('click', function () {
        searchClick();
     });
}

当我在 Google Chrome 中使用它时,它运行正常。

但是,当我在 Internet Explorer(版本:9)中使用它时, $('.search').on('click',function(){..}); 被多次调用和我的controller抛出“会话超时”例外。最后,我将被重定向到登录页面

实际上,它是在点击第一次点击事件时点击高级搜索获取网格结果。但是,如果它第二次调用,那么控制器throws异常。

但我不知道为什么在 Internet Explorer 中为第二,第三,......时间调用事件$('.search').on('click',function(){..});

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

请尝试

  e.preventDefault() 

答案 1 :(得分:0)

将.unbind(&#34;点击&#34;)替换为.off(&#34;点击&#34;)或.one(&#34;点击&#34;) < / p>

function search() {
    $('#searchResults').off('click').on('click', function () {
        searchClick();
     });
}

答案 2 :(得分:0)

而不是e.stopPropagation(),我使用了e.preventDefault()并且工作正常。谢谢@Kushal Vora

我得到了解决方案,代码是:

 $('.search').on('click', function (e) {
     e.preventDefault();
     search();
 });