2012-12-05 69 views
0

这是推动我疯了。我在我的页面上有一个在colorbox中打开的div。当用户点击在div的链接之一,它触发一个事件的代码(见下文),应依次填充隐藏字段,然后单击服务器按钮后面运行一些代码。第一次尝试时链接点击事件未触发按钮点击事件(仅限IE)。第二次点击工作。

问题是,在IE(9),它不会点击第一个尝试的服务器按钮(是的,它确实去到客户端点击事件)。奇怪的是,它似乎在Chrome和FF中工作正常。

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

这可能是值得一提的是,在在颜色框打开DIV的链接是动态填充。但是这应该会影响链接上的点击事件。

任何帮助,将不胜感激。

回答

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

嗨,你能解释一下这是应该实现的?我不确定我得到了这是做什么。干杯。 – Deadlykipper

+0

您防止在IE中点击链接事件,此事件不会停止冒泡,即继续监听器第一个事件。对于ff和crrome,你可以用e.preventDefault()来防止这种行为。我认为匹配更好使用$(“#button1”)。click(); –

0

试试这个:

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

对不起,这不起作用。现在甚至没有进入链接点击事件,更不用说服务器按钮了。 :( – Deadlykipper

+0

对不起,最后一行出现语法错误,现在试试吧 –

+0

如果链接是按照OP的说法动态填充的话,这不会解决问题,您需要使用.on()作为OP正在尝试,因为它允许动作“泡泡”到动态创建的dom元素 – bpeterson76

0

这里是[小提琴] [1]你的答案。它在所有浏览器上工作正常。

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

刚搬进来的文件准备好功能

+0

没有链接,我认为这可能与colorbox有关,它以前从未发生过,有点困惑 – Deadlykipper

1

代码看来,适当的形式将触发按钮与.trigger()提交,而不是提交。根据定义,没有任何附加参数的.submit()镜像.trigger('submit')这是你在表单上运行的内容,而不是按钮。

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

这里是documentation on .trigger()

对我来说,提交表单更合乎逻辑的方式将完全绕过按钮和.submit()的实际形式本身。有可能是你为什么不这样做的原因,但似乎更直接,而不是依靠用户可能被“搞砸了”的元素。

+0

嗨,对于迟到的回应感到抱歉 - 我很忙,我会给你一个回复,回复你。 – Deadlykipper

相关问题