2014-10-29 66 views
1

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

我发现的一个问题是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目前不是一个选项。

+0

如果你尝试'alert(a.getAttribute('maxLength'));'? – 2014-10-29 17:47:00

+0

使用getAttribute,它显示IE6,IE8和IE11标准模式的值(350),但IE11兼容模式显示为“空”。 – Cass 2014-10-29 18:03:10

+0

它看起来像IE7(这是IE11在兼容模式下)不支持maxLength。它实际上是否对TextArea有影响,意思是说它是否限制用户输入? – 2014-10-29 18:11:22

回答

1

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

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

添加一个复制最大长度的值自定义属性:

<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 
} 

这应该普遍的工作。