2014-10-29 162 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 
} 

這應該普遍的工作。