Javascripts在chrome中工作但在IE中不工作

时间:2014-01-06 13:07:42

标签: javascript internet-explorer

我正在使用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(); 
}

2 个答案:

答案 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>