在第一次尝试时链接点击事件不触发按钮点击事件(仅限IE)。二次点击即可使用。

时间:2012-12-05 14:18:58

标签: c# javascript jquery asp.net

这让我很生气。我的页面上有一个div,在彩盒中打开。当用户单击div中的一个链接时,它会向代码(下面)发出一个事件,该代码应依次填充隐藏字段,然后单击服务器按钮以运行一些代码。

问题是,在IE(9)中,它不会在第一次尝试时单击服务器按钮(是的,它会进入客户端点击事件)。奇怪的是,它似乎在Chrome和FF中运行良好。

$(document).on('click', '.link', function (e) {
    e.preventDefault();
    var thisID = $(this).attr('href').replace('#ca', '');
    $("#hiddenField").val(thisID );
    $("#button1").submit();
});

值得一提的是,在colorbox中打开的div中的链接是动态填充的。但这应该会影响它,因为链接上的点击事件工作正常。

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:1)

似乎正确的形式是使用.trigger()触发按钮提交,而不是提交。根据定义,.submit()没有任何附加参数镜像.trigger('submit')这是你在表单上运行的,而不是按钮。

例如:$("#button1").trigger("click");

这是documentation on .trigger()

对我来说,提交表单更合乎逻辑的方法是完全绕过按钮而.submit()实际表单本身。可能有理由说明你为什么不这样做,但它似乎更直接而不是依赖于一个可能被用户“搞砸”的元素。

答案 1 :(得分:0)

e=e?e:window.event;
if($.browser.msie)
{ 
  e.returnValue=false; 
  e.cancelBubble=true;
 }
else
 {e.preventDefault();}

答案 2 :(得分:0)

请改为尝试:

$(document).ready(function() {
    $('.link').click(function (e) {
        e.preventDefault();
        var thisID = $(this).attr('href').replace('#ca', '');
        $("#hiddenField").val(thisID);
        $("#button1").submit();
    }
)});

答案 3 :(得分:0)

这是[小提琴] [1]的答案。它适用于所有浏览器。

我的代码似乎没有任何问题

刚刚在文档就绪函数中移动了代码