目前我有以下代码
<input type="number" />
Run Code Online (Sandbox Code Playgroud)
它出现了这样的事情
右侧的小选择器允许数字变为负数.我该如何预防呢?
我对使用有疑问type="number"
,它造成的问题多于解决问题,无论如何我都会理智地检查它,所以我应该回去使用type="text"
?
Que*_*tin 571
添加一个min
属性
<input type="number" min="0">
Run Code Online (Sandbox Code Playgroud)
Kus*_*hal 93
我找到了另一种防止负数的解决方案.
<input type="number" name="test_name" min="0" oninput="validity.valid||(value='');">
Run Code Online (Sandbox Code Playgroud)
Pav*_*vlo 72
这取决于你想要的精确程度.它只想接受整数,而不是:
<input type="number" min="1" step="1">
Run Code Online (Sandbox Code Playgroud)
如果你想要浮点数,例如,小数点后两位数:
<input type="number" min="0.01" step="0.01">
Run Code Online (Sandbox Code Playgroud)
Shu*_*tal 39
您可以通过onkeypress
在input
标记内添加来强制输入仅包含正整数.
<input type="number" onkeypress="return event.charCode >= 48" min="1" >
Run Code Online (Sandbox Code Playgroud)
在此处,event.charCode >= 48
确保仅返回大于或等于0的数字,而min
标记确保您可以通过在输入栏内滚动来达到最小值1.
Haf*_*kib 14
您可以通过以下方式将负输入转换为正数:
<input type="number" onkeyup="if(this.value<0){this.value= this.value * -1}">
Run Code Online (Sandbox Code Playgroud)
您可以使用以下内容使type="number"
只接受正数:
input type="number" step="1" pattern="\d+"
Run Code Online (Sandbox Code Playgroud)
尝试
<input type="number" pattern="^[0-9]" title='Only Number' min="1" step="1">
如果您尝试输入负数,onkeyup 事件会阻止此操作,如果您在输入数字上使用箭头,onblur 事件会解决该部分。
<input type="number"
onkeyup="if(this.value<0)this.value=1"
onblur="if(this.value<0)this.value=1"
>
Run Code Online (Sandbox Code Playgroud)