在IE11中调用javascript函数时出错

时间:2014-01-21 10:51:47

标签: javascript

下面的

是我在页面上创建的js函数:

<script type="text/javascript">
    function maxLength(field, maxChars) {
        if (field.value.length >= maxChars) {
            event.returnValue = false;
            return false;
        }
    }

</script>

这是我称之为函数的textarea:

<textarea id="txtapproverremarks" cols="20" rows="2" runat="server" style="width: 600px"
                                                            onkeypress="javascript:return maxLength(this,'50');"></textarea>

在IE7 / 8/9上工作正常但IE 10&amp; IE 11:

JavaScript runtime error: Function expected

任何人都有任何想法,为什么会这样。

提前致谢。

2 个答案:

答案 0 :(得分:1)

评论event.returnValue语句。我认为不需要它,其余代码应该可以正常运行。

<script type="text/javascript">
    function maxLength(field, maxChars) {
        //if (field.value.length >= maxChars) {
            //event.returnValue = false;
        //    return false;
        //}
        //Just return required result
        return (field.value.length <= maxChars);
    }

</script>

您还需要更改HTML,尤其是javascript函数调用。

<textarea id="txtapproverremarks" cols="20" rows="2" 
runat="server" style="width: 600px"
 onkeypress="javascript:return maxLength(this,50);"></textarea>

答案 1 :(得分:0)

您应该使用一些框架或库来验证字段。例如jquery with validate plugin:http://jqueryvalidation.org/
如果使用ASP.NET WebForms,则还可以使用验证控件:http://msdn.microsoft.com/en-us/library/debza5t0(v=vs.100).aspx

编辑:
如果由于IE11故障而必须更改此代码,则还必须在您使用的每个页面上更改它。我认为你的做法是错误的。它导致小的可维护性和灵活性。使用大多数开发人员使用的内容是一种很好的做法。因此,如果另一个开发人员加入该项目,则预热时间会减少,并且公共库比自定义解决方案具有更好的支持。

错误本身表明问题不在您的函数内部。解析器无法将maxLentgh表达式识别为上下文中的有效函数。 更改函数的名称,例如maxLength2 我认为你遇到了一些优先于全局函数的内部变量。 (如果你使用一些通用解决方案,这种问题就不会出现了)