提交按钮上的Internet Explorer 7 onclick事件不会触发

时间:2013-07-05 10:37:44

标签: javascript internet-explorer-7

我有一个通过ajax提交到后端的表单,我正在javascript中编写一个常规禁用功能,我可以使用它来设置元素的onclick。将其键入浏览器,以便忽略以下任何语法错误。

function(elementID , processingText) {
    var element = document.getElementById(elementID);
    if (element) {
        element.setAttribute("onClick", "alert('test')");
    }
}

所以基本上元素应该有一个onclick事件来设置警报。我可以确认onclick属性设置正确,并在IE8 +,Chrome和Firefox中触发。它不会在IE7中触发。

我正在测试的元素是表单中的提交按钮(页面上的一个表单)。它有许多字段和一个提交按钮。

编辑代码会调度一个操作,因此无论如何都要提交,但直到警报被确认后才会提交 / EDIT

过去两个小时我一直在网上搜索,以下解决方案不起作用或不是一个选项 -

向表单添加隐藏的输入字段。 在标记中换行提交按钮并在此标记中设置onclick。 将onclick的大小写更改为onClick

任何涉及在不使用javascript的情况下更改html的解决方案都不是一个选项,我正在尝试创建一个通用的disableElement函数。我可以在IE7上定位脚本,因此它不必在所有浏览器中工作,只需IE7。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

IE7有很多兼容性问题,其中只有一个。如果你正在编写需要与IE7兼容的javascript,你最终会编写一个 lot 冗余代码,它以两种不同的方式做同样的事情,以满足你支持的不同浏览器。

旧浏览器中的这类问题恰恰是jQuery等库存在的原因。 jQuery做了很多事情,但它做得非常好的一件事就是在编写跨浏览器的javascript时出现许多令人讨厌的小怪癖。

近年来,跨浏览器问题变得不那么重要了,因为现代浏览器(包括IE)有更好的标准支持,但如果你支持旧浏览器,特别是旧的IE版本,我建议使用jQuery(或类似的库),因为他们已经解决了这个问题,还有很多其他人会把你赶出去。

如果您使用jQuery,您的代码将变为:

$(element).click(function() {alert('test');});

在任何人指出之前,是的我知道OP没有在问题中指定jQuery,可能不想要jQuery答案,但在这种情况下我会说这是最好的答案,因为如果你不'使用它,你最终必须自己编写大量相同的兼容性代码,而这些代码已经在jQuery中了。

答案 1 :(得分:0)

IE 7确实支持setAttribute方法,但似乎无法使用它更改onclick属性。有关此问题的详细信息,请查看:Why does an onclick property set with setAttribute fail to work in IE?

干杯