我正在使用javascript进行一些验证。它在Chrome中很好,但像往常一样IE正在播放
我的代码在
下面function check(a,id){
inputs = document.getElementsByName('attname[]');
for (var ind in inputs){
if (inputs[ind].value=="") {
alert("Please complete every participant");
return false;
}
}
$("#UserForm").submit();
}
答案 0 :(得分:1)
你没有提到实际问题是什么(“正在播放”并不是真正有用的描述;)),也不是你正在测试的IE版本,但我猜IE9或更早版本。
您的问题可能是由于document.getElementsByName()
存在错误并且在IE9及更早版本中未正确实施。 (虽然在IE10中很好)。
您可以看到完整的浏览器兼容性图表here,以及有关IE中的错误的说明。
解决方案取决于您需要支持哪些IE版本。
如果您对支持IE8及更高版本感到满意,可以使用document.querySelectorAll()
代替。这会使用CSS选择器选择元素,因此您可以执行以下操作:
var inputs = document.querySelectorAll('[name=attname\\[\\]]');
这将直接替代您现有的getElementsByName()
电话,并且可以在IE8的所有IE版本以及所有其他浏览器中使用。
请注意,使用此语法,您必须反斜杠 - 转义[]
个字符,因为它们是CSS中的保留字符。 (以及反斜杠加倍的原因是因为你还必须在Javascript字符串中转义反斜杠。)
此语法在IE7中不起作用,因为它不受支持((请参阅此处获取浏览器支持信息)[http://caniuse.com/queryselector]),因此如果您需要支持IE7,您将拥有找到替代解决方案。我的建议是使用像jQuery这样的库,否则你只会花费数年时间与IE7有限的DOM功能作斗争。或者您可以放弃IE7支持:这也是一个好主意。
答案 1 :(得分:-1)
我建议您使用JQUery来处理剩下的内容,而不仅仅是提交表单。
JQuery处理浏览器问题,易于使用,纤薄,以及针对不同浏览器的JavaScript兼容性问题的抽象层。
<script type="text/javascript">
function check(a, id) {
$("[name=attname]").each(function() {
if(($this).val() == "") {
alert("Please complete every participant");
return false;
}
});
return true;
}
</script>