Onclick javascript在IE中无法正常工作

时间:2009-12-16 15:31:46

标签: javascript jquery internet-explorer

请原谅我的无知我对Javascript不是很熟悉,并且已经被不再在公司的开发人员修复错误。

onclick可以在FireFox中完美运行,但是在IE 7和8中(我们测试的唯一),它似乎正确地运行了onclick函数,而不是在goStep3()中提交到表单URL的数据,它会遍历页面上的每个onclick,然后使用'href =“#”'然后最终提交错误信息,因为变量已被覆盖50次。

<a href="#" onclick="trackSponsor(62, 64265); goStep3(1896, 64265, 0); return false;">view</a>

修改 当我在IE8的开发人员工具中运行trackSponsor(62, 64265); goStep3(1896, 64265, 0); return false;时,我得到一个错误,即在函数外返回false ....删除它可以正常工作。

我相信的那条线是否会导致问题

trackSponsor()工作正常并返回false

goStep3()是一个相当大的函数,但它的工作原理是从其中4个其他函数中检索值,将值分配给theAction

中的URL

它通过编辑:

完成功能
var yr = $("#find-yr").attr('value');
var me = $("#find-me").attr('value');
var mo = $("#find-mo").attr('value');
var keywords = $("#find-keywords").attr('value');
var theAction = PATH_BASE+'find/step3/'+p_term+'/'+p_id+'/'+p_l_id+'/';

document.forms['FindForm'].action = theAction;
document.FindForm.submit(); 
return true;

我已尝试从此函数返回false,并将document.FindForm.submit()更改为document.forms['FindForm'].submit()的'正确'语法,但在运行所有其他'onclick'之前它仍然无法提交在页面上。

提前致谢!

注意:

正在使用jQuery。

Javascript不会丢失任何错误。

这在FireFox中运行良好

我可以看到它使用开发人员工具浏览其他'onclick'中的所有其他函数,并逐步浏览页面,它不会提交goStep3的结果,直到它通过了所有其他'onclick'函数页。

5 个答案:

答案 0 :(得分:1)

“将我之前的评论作为答案发布”

我看到很多Jquery与属性选择器一起使用,所以请根据这些来检查代码..

修改

我注意到你不熟悉Javascript ..所以你不知道,jQuery选择器,将选择匹配某个“选择器 - 过滤器”的所有标签,并对它们执行某个操作......所以,如果有一个选择器选择具有href属性的所有A标签(或者它们之间可能是另一个公共属性..)然后这将是您的问题的原因。

编辑: - 在您发布答案后 -

很高兴你找到答案..

虽然它很脆弱, 根据你的问题,它通过“每个元素与href =”#“ ..

然而根据 msdn,事件冒泡只是将这些未处理的事件传递给父元素进行处理。不是通过“类似的”标签:)

哦,好吧......当涉及到IE

时,没有什么是合乎逻辑的

答案 1 :(得分:0)

我首先要删除“return false;”来自onClick事件,因为它确实没有做任何事情。

答案 2 :(得分:0)

尝试更改

 href="#" 

 href='javascript:void(0)' .

答案 3 :(得分:0)

我无法确定哪里出错了,但我不鼓励使用表单的name属性来引用它,就像你在这里所做的那样:

document.forms['FindForm'].action = theAction;
document.FindForm.submit(); 

为什么不尝试以下jQuery:

$("form:FindForm").action = theAction;
$("form:FindForm").trigger("submit");

您还应该检查$("form:FindForm")是否确实引用了所需的表单元素。

答案 4 :(得分:0)

因为IE如何使用泡泡而调用了这个问题!感谢大家的帮助,我已将代码解决方案包含在goStep3()中。

    var browserName = navigator.appName;
if (browserName == "Microsoft Internet Explorer") {
    window.event.cancelBubble = true;       
}