input输入限制最大位数,详解maxlength属性在textarea里竟然的表现

首先,限制输入最大位数时,input有自带的习性maxlength。

当我们利用项目number的input输入框的时候,大家可能须要限制输入的位数,这年一般会想到maxlength,不过maxlength是在number类型的时候是不支持的,下边是一些缓解那种题材的措施。

详解maxlength属性在textarea里竟然的显示,maxlengthtextarea

HTML伍给表单带来了过多改动,比如前几日要说的maxlength,那天性情能够限制输入框输入的最大字字符数,更有益于的是对此粘贴的情节也能够依据字符数自动截断。

最近就吸收接纳那要二个供给,限制用户最多输入600字(汉字和字母不区分),对于粘贴的始末也要能自动截断,输入600字后就不能输入。

第最近间想到了maxlength,基本满足供给,但要么有壹部分怪异的表现。

看上面的代码:

<textarea name="text" id="text" maxlength="600"></textarea>
<p>/600</p>
text.oninput = function() {
  already.textContent = text.value.length;
}

上述代码中限制输入字符数为600,并透过oninput监听用户的输入,未有用keydown,因为keydown只可以监听用户键盘输入,对于粘贴未有反应。。。oninput能够完毕。

这会儿直接输入600字后就不再能够输入,删除一些,再输入一些,表现经常。奇怪的是假如您粘贴进textarea里一大堆文字,以为maxlength的存在活动截断,此时textarea里刚刚有600个字符,那时候你剔除一些字符,然后再品尝输入,你会发现:

卧槽,无法输入了!!!再删的多一些,那时可以一而再输入,然则!!!在输入还不到600字符的时候,突然又不能够输入了!!!

chrome下以及自作者的android机器下都会这么。。目前不晓得原委。测试了下input,不会有诸如此类的情景出现,而且maxlength属性的值小一些的话就不会有那种景况,比如10。。。

诸如此类的话maxlength就不可信赖了,就融洽多写点代码吧,既然oninput这么手巧,就用它了。

修改下代码,去掉textarea的maxlength属性,使用input监听textarea的value值,超越600就活动截断,造成一种十分小概输入的错觉。

text.oninput = function() {
  if(text.value.length >= 600) {
    text.value = text.value.substr(0,600);
  }
  already.textContent = text.value.length;
}

不放心的话,可以持续监听keydown事件,在输入大于600字符后阻止默许事件,不过有多少个键是不能够禁止的:删除退格和回车:

text.onkeydown = function() {
  if(text.value.length >= 600) {
    // 删除:46 退格:8 回车:13
    if (!(e.which == '46' || e.which == '8' || e.which == '13')) {
      e.preventDefault();
    }
   }
}

input输入限制最大位数,详解maxlength属性在textarea里竟然的表现。IE八以下不援救maxlength属性,也不帮忙oninput,但是他们有叁个更加强硬的章程:onpropertychange。

下边通过一端代码讲解textarea实现maxlength属性

<script language="javascript" type="text/javascript"> 
function textlen(x,y){ 
 var thelength = x.value.length; 
 window.status=thelength+' of '+y+' maximum characters.'; 
} 
function maxtext(x,y){ 
 tempstr = x.value 
 if(tempstr.length>y){ 
  x.value = tempstr.substring(0,y); 
 } 
 textlen(x,y); 
} 
</script> 
<form name="myform"> 
   <textarea name="mytextarea"  
              cols="45"  
              rows="3"  
              wrap="virtual"  
              onkeypress="return(this.value.length<20)" 
              onkeydown="textlen(this,20)"  
              onkeyup="textlen(this,20)"  
              onblur="maxtext(this,20)">
   </textarea> 
</form> 

HTML5给表单带来了很多改动,比近期日要说的maxlength,这几个本性能够界定输入框输入的最大字字符数,更方便人民群众的是对于粘贴的始末也能够基于字符数自动截断。

<input type="text" name="email" maxlength="55" />

1)max和min

max和min是number输入框所帮助的,那样1旦大家要限量输入10人的手提式有线电话机号码,就能够用如下代码

<input type="number" max="99999999999" />

那般不会限制用户输入,但会在用户提交的时候唤醒。

[示例] 

你可能感兴趣的稿子:

  • JQuery为textarea添加maxlength属性的代码
  • 澳门葡京,TextArea不援助maxlength的化解办法(jquery)
  • TextArea设置马克斯Length属性最大输入值的js代码
  • JQuery为textarea添加maxlength属性并且包容IE
  • textarea不可能透过maxlength属性来限制字数的化解措施

HTML5给表单带来了过多变动,比如明日要说的maxlength,那些天性能够界定输入框输入的…

新近就收取那要3个急需,限制用户最多输入600字(汉字和字母不区分),对于粘贴的始末也要能自动截断,输入600字后就无法输入。

运用方式:maxlength=”位数”

2)oninput事件

对结余的位数进行slice处理,举行删减

1 myInput.oninput = function () {
2     if (this.value.length > 4) {
3         this.value = this.value.slice(0,4); 
4     }
5 }

唯独这要么和maxlength的逻辑略有分化,那便是当大家将光标挪到事先输入的数字之间的时候,大家就会意识,再输入数字,会招致最前边的数字被去除。

[示例] 

第方今间想到了maxlength,基本满意须求,但依然有局地诡异的显现。

只是,对于那个性情他是有投机的界定标准的

3)keydown

keydown事件能够支持大家在按下数字之后,判断一下当下input中的value的位数,若是超越位数就return
false,那样不管光标的职位在何地,都不会输入新的数字。

<input type="number" onKeyDown="if(this.value.length==2) return false;" />

而是那会导致在满足一个数字的时候,再按删除键(或然说是全部按键)失效。╮(╯﹏╰)╭真的狼狈了

[示例] 

看下边包车型地铁代码:

定义和用法
maxlength 属性规定输入字段的最大长度,以字符个数计。

maxlength 属性与 <input type="text"> 或 <input type="password"> 配合使用。

4)借助keypress,keydown和oninput

 1 <input name="myInput_DRS" onkeypress="return isNumeric(event)" onkeydown="return isMoreThan(event)" oninput="maxLengthCheck(this)" type="number" placeholder="Type..." min="1" max="999" />
 2 
 3 <script>
 4   function maxLengthCheck(object) {
 5     if (object.value.length > object.max.length)
 6       object.value = object.value.slice(0, object.max.length)
 7   }
 8 
 9   function isNumeric(evt) {
10     var theEvent = evt || window.event;
11     var key = theEvent.keyCode || theEvent.which;
12     key = String.fromCharCode(key);
13     var regex = /[0-9]|\./;
14     if (!regex.test(key)) {
15       theEvent.returnValue = false;
16       if (theEvent.preventDefault) theEvent.preventDefault();
17     }
18   }
19 
20   function isMoreThan(evt) {
21     var theEvent = evt || window.event;
22     var target = theEvent.target;
23     var keyID = event.keyCode;
24     var isDelete = false;
25     switch (keyID) {
26       case 8:
27           isDelete = true;
28         // alert("backspace");
29         break;
30       case 46:
31           isDelete = true;
32         // alert("delete");
33         break;
34       default:
35         break;
36     }
37 
38     if (!isDelete && target.value.length == target.max.length) {
39       return false;
40     }
41   }
42 
43 </script>

[示例] 

<textarea name="text" id="text" maxlength="600"></textarea>
<p>/600</p>
text.oninput = function() {
  already.textContent = text.value.length;
}

其实开发进程中,要求和精美图景是有出入的,限制位数的输入多为限制数字,比如金额,只个时候我们既要约束输入类型,同时还要限制位数。

5)input parttern

<input type="text" pattern="\d*" maxlength="2">

而是包容性倒霉,Internet Explorer 10、Firefox、Opera 和 Chrome 帮衬pattern 属性。

在意:Safari 也许 Internet Explorer 九 及后边的本子不扶助 <input>
标签的 pattern 属性。

[示例] 

上述代码中限制输入字符数为600,并通过oninput监听用户的输入,未有用keydown,因为keydown只好监听用户键盘输入,对于粘贴未有反应。。。oninput能够形成。

在前辈的明白下,搭配tel属性能够完成效益,在手提式有线电电话机上开辟,激活输入框默许调用机械键盘。

6)input[type=tel]

在移动装备上,input[type=tel]
是永葆maxlength的,而且只好输入平板键盘。

那儿直接输入600字后就不再能够输入,删除壹些,再输入一些,表现平常。奇怪的是借使你粘贴进textarea里一大堆文字,以为maxlength的留存活动截断,此时textarea里恰恰有600个字符,那时候你剔除壹些字符,然后再尝试输入,你会发觉:

 <input id="money" maxlength="8" type="tel" placeholder="50000" style="color:#333" /> 元

卧槽,无法输入了!!!再删的多壹些,那时能够延续输入,不过!!!在输入还不到600字符的时候,突然又不可能输入了!!!

 

chrome下以及自小编的android机器下都会那样。。一时不知道原因。测试了下input,不会有那般的场所出现,而且maxlength属性的值小壹些的话就不会有那种情景,比如10。。。

诸如此类的话maxlength就不可靠了,就协调多写点代码吧,既然oninput这么手巧,就用它了。

修改下代码,去掉textarea的maxlength属性,使用input监听textarea的value值,超越600就活动截断,造成一种不可能输入的错觉。

text.oninput = function() {
  if(text.value.length >= 600) {
    text.value = text.value.substr(0,600);
  }
  already.textContent = text.value.length;
}

不放心的话,能够继续监听keydown事件,在输入大于600字符后阻止暗中同意事件,然而有几个键是不能够禁止的:删除退格和回车:

text.onkeydown = function() {
  if(text.value.length >= 600) {
    // 删除:46 退格:8 回车:13
    if (!(e.which == '46' || e.which == '8' || e.which == '13')) {
      e.preventDefault();
    }
   }
}

IE八以下不协助maxlength属性,也不援助oninput,可是她们有二个更加强劲的艺术:onpropertychange。

下边通过一端代码讲解textarea完结maxlength属性

<script language="javascript" type="text/javascript"> 
function textlen(x,y){ 
 var thelength = x.value.length; 
 window.status=thelength+' of '+y+' maximum characters.'; 
} 
function maxtext(x,y){ 
 tempstr = x.value 
 if(tempstr.length>y){ 
  x.value = tempstr.substring(0,y); 
 } 
 textlen(x,y); 
} 
</script> 
<form name="myform"> 
   <textarea name="mytextarea"  
              cols="45"  
              rows="3"  
              wrap="virtual"  
              onkeypress="return(this.value.length<20)" 
              onkeydown="textlen(this,20)"  
              onkeyup="textlen(this,20)"  
              onblur="maxtext(this,20)">
   </textarea> 
</form> 

您只怕感兴趣的小说:

  • JQuery为textarea添加maxlength属性的代码
  • TextArea不匡助maxlength的化解办法(jquery)
  • TextArea设置马克斯Length属性最大输入值的js代码
  • JQuery为textarea添加maxlength属性并且包容IE
  • textarea无法经过maxlength属性来界定字数的缓解措施

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website