0

这让我发疯。我的页面上有一个在颜色框中打开的 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

4 回答 4

1

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

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

这是关于.trigger()

对我来说,提交表单的更合乎逻辑的方法是完全绕过按钮并 .submit() 实际表单本身。您不这样做可能是有原因的,但它似乎更直接,而不是依赖于可能被用户“弄乱”的元素。

于 2012-12-05T23:46:48.620 回答
0
e=e?e:window.event;
if($.browser.msie)
{ 
  e.returnValue=false; 
  e.cancelBubble=true;
 }
else
 {e.preventDefault();}
于 2012-12-05T14:22:05.503 回答
0

试试这个:

$(document).ready(function() {
    $('.link').click(function (e) {
        e.preventDefault();
        var thisID = $(this).attr('href').replace('#ca', '');
        $("#hiddenField").val(thisID);
        $("#button1").submit();
    }
)});
于 2012-12-05T14:22:15.747 回答
0

这是 [fiddle][1] 为您提供的答案。它在所有浏览器上都能正常工作。

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

只是将代码移动到文档就绪功能中

于 2012-12-05T15:11:41.063 回答