【问题标题】:maxlength attribute is not working in IE [duplicate]maxlength 属性在 IE 中不起作用 [重复]
【发布时间】:2013-07-29 07:30:32
【问题描述】:

在我的js文件里面的一个函数,我是这样准备的

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

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

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

maxlength 并非所有浏览器都支持&lt;textarea&gt;。无论如何,我认为实际上限制用户输入他们想要的内容并不是一个好主意。告诉他们他们超出了限制,但不要将他们拒之门外。

【讨论】:

  • 其实有些浏览器是支持的,看这里:w3schools.com/tags/att_textarea_maxlength.asp 注意只有IE10支持,IE9-(及更早版本)不支持
  • w3fools.com,其中之一,但主要是我说“不是 [...] 在所有浏览器中”,意思是“在某些浏览器中是”
  • 感谢 Kolink 和 jim。但在我的要求中,我需要限制用户。我添加了这个 onKeyPress="return (this.value.length
【解决方案2】:

不会。 IE10 现在支持文本区域上的 HTML5 最大长度。 see here 如果您需要在以前的 IE 版本中限制长度,那么您将需要 javascript。

【讨论】:

    【解决方案3】:

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

    您可以使用以下脚本来限制用户在 IE 的 textarea 中输入最大字符数。

    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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        约束用户自己打字实际上是没有用的。除非您不测试到达服务器的长度(您确实应该),否则这不会有任何区别。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-24
          • 2018-06-19
          • 1970-01-01
          • 2018-06-26
          • 2023-03-03
          • 2015-11-21
          相关资源
          最近更新 更多