为什么input类型为number时,能够输入 +-. 这几个字符

<input type="number" pattern="[0-9]*" placeholder="请输入手机号码" autocomplete="off">

出现这个问题原因是什么?该如何解决?
问题图片:

clipboard.png

clipboard.png

clipboard.png

阅读 4k
2 个回答

输入大于0的正整数

代码如下:

<input onkeyup="if(this.value.length==1){this.value=this.value.replace(/1/g,'')}else{this.value=this.value.replace(/D/g,'')}" onafterpaste="if(this.value.length==1){this.value=this.value.replace(/1/g,'')}else{this.value=this.value.replace(/D/g,'')}">

1,文本框只能输入数字代码(小数点也不能输入)

代码如下:

<input onkeyup="this.value=this.value.replace(/D/g,'')" onafterpaste="this.value=this.value.replace(/D/g,'')">

2,只能输入数字,能输小数点.

代码如下:

<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
<input name=txt1 onchange="if(/D/.test(this.value)){alert('只能输入数字');this.value='';}">

3,数字和小数点方法二

代码如下:
<input type=text t_value="" o_value="" onkeypress="if(!this.value.match(/^[+-]?d?.?d?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onkeyup="if(!this.value.match(/^[+-]?d?.?d?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onblur="if(!this.value.match(/^(?:[+-]?d+(?:.d+)?|.d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^.$/))this.value=0;this.o_value=this.value}">


  1. 1-9

你只能写一个函数 来做输入值的匹配 形成响应式
不符合你的输入要求就 删除 来达到不允许输入其它字符的效果
因为number类型是允许输入 +-/*.这些的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题