IE11兼容性视图中的TEXTAREA maxLength

时间:2014-10-29 17:35:38

标签: javascript html

我正在修改当前在IE6和IE8中运行的Web应用程序,以便在IE11中运行。由于大量的HTML不符合IE11中标准模式的要求,因此该网站将以兼容模式运行。

我发现的一个问题是TEXTAREA字段的maxLength值。在以下示例中,JavaScript“alert”语句将在IE6,IE8和IE11标准模式下打印值“350”,但在IE11兼容模式下给出“未定义”。

HTML:

<TD><TEXTAREA ID="myfield" NAME="myfield" CLASS="clsText" maxLength="350" COLS=120 ROWS=3 STYLE = "WIDTH:620px"></TEXTAREA></TD>

JavaScript的:

var a = document.getElementById(frmCRISLogon.myfield.id);
alert(a.maxLength);

有谁知道为什么?有没有办法在IE11兼容模式下获得价值?我意识到正确的解决方案是改进代码,这样我们就不必使用兼容模式,但我正在寻找能够快速实现的东西。 JQuery目前不是一个选项。

1 个答案:

答案 0 :(得分:1)

当IE11在兼容模式下运行时 - 它模拟IE7(为了验证这一点,在此模式下加载http://whatsmyuseragent.com/)。

看起来由于某种原因,IE7中无法访问maxLength属性。您可以添加一些冗余以使代码中的值可访问。

添加复制maxLength值的自定义属性:

<textarea id="myfield" name="myfield" class="clsText" maxlength="350" ml="350" cols=120 rows=3 style="WIDTH:620px"></textarea>

然后在你的代码中你可以做

var a = document.getElementById("myfield");
var maxLength = a.getAttribute("maxLength");

if (maxLength == null) {
   // now you know you're either in IE7 or IExx/compatability mode
   maxLength = a.getAttribute("ml");  // grab value of backup attribute
}

这应该普遍适用。