请原谅我的无知我对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
它通过编辑:
完成功能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'函数页。
答案 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;
}