maxlength属性在IE中不起作用

maxlength attribute is not working in IE

本文关键字:不起作用 IE 属性 maxlength      更新时间:2023-09-26

在函数内部的js文件中,我正在像这样准备

var x = '<span class="someclass">
         <textarea class="editField" maxlength="60">
         </textarea>      
         </span>';

这里我使用maxlength属性来限制文本区域的大小,它在IE中不起作用。

并非所有浏览器的<textarea>都支持

maxlength。无论如何,我认为实际上限制用户键入他们想要的内容从来都不是一个好主意。告诉他们他们已经超过了极限,但不要把他们拒之门外。

它不会。IE10现在支持文本区域的HTML5最大长度。请参阅此处,如果您需要在以前的IE版本中限制长度,则需要使用javascript。

IE不支持最大长度,如果您想限制用户在IE中输入无限字符,则需要使用javascript。

您可以使用以下脚本来限制用户在IE的文本区域中输入最多字符。

window.onload = function() { 
  var txts = document.getElementsByTagName('TEXTAREA') 
  for(var i = 0, l = txts.length; i < l; i++) {
    if(/^[0-9]+$/.test(txts[i].getAttribute("maxlength"))) { 
      var func = function() { 
        var len = parseInt(this.getAttribute("maxlength"), 10); 
        if(this.value.length > len) { 
          alert('Maximum length exceeded: ' + len); 
          this.value = this.value.substr(0, len); 
          return false; 
        } 
      }
      txts[i].onkeyup = func;
      txts[i].onblur = func;
    } 
  } 
}

您的文本区域可以是:

<textarea maxlength="10"></textarea>

DEMO

maxlength属性不是HTML 4.01中的标准属性。虽然它是在HTML5中定义的,但我猜IE并没有实现它。要使它在所有浏览器中都能工作,你可以使用javascript。这是一个例子。请检查一下,它可能会对你有所帮助。。谢谢

window.onload = function() { 
var txts = document.getElementsByTagName('TEXTAREA') 
for(var i = 0, l = txts.length; i < l; i++) {
    if(/^[0-9]+$/.test(txts[i].getAttribute("maxlength"))) { 
    var func = function() { 
    var len = parseInt(this.getAttribute("maxlength"), 10); 
    if(this.value.length > len) { 
      alert('Maximum length exceeded: ' + len); 
      this.value = this.value.substr(0, len); 
      return false; 
    } 
  }
   txts[i].onkeyup = func;
   txts[i].onblur = func;
  } 
 } 
}

限制用户在自己的端上键入实际上是没有用的。除非你不测试到达服务器的长度(你真的应该测试),否则这不会有任何区别。

我支持Kolink所说的,不要试图限制用户打字,但你可以告诉他,它的输入不会被接受,因为它超过了。