目前我有以下代码

<input type="number" />

结果是这样的

右边的选择器允许数字变为负数。我该如何预防呢?

我对使用type="number"有疑问,它造成的问题比它解决的要多,我无论如何都要检查它,所以我应该回到使用type="text"吗?


当前回答

如果您尝试输入负数,onkeyup事件将阻止此操作,如果您在输入数字上使用箭头,onblur事件将解决此部分。

<输入类型=“数字” onkeyup=“if(this.value<0)this.value=1” onblur=“if(this.value<0)this.value=1” >

其他回答

对于文本类型的输入,你可以使用它来更好地验证,

return (event.keyCode? (event.keyCode == 69 ? false : event.keyCode >= 48 && event.keyCode <= 57) : (event.charCode >= 48 && event.charCode <= 57))? true : event.preventDefault();

Try

<input type="number" pattern="^[0-9]" title= " Only number" min="1" step="1">

通过在输入标记中添加onkeypress,可以强制输入只包含正整数。

<input type=“number” onkeypress=“return event.charCode >= 48” min=“1” >

在这里,事件。charCode >= 48确保只返回大于或等于0的数字,而min标记确保通过在输入栏内滚动可以得到最小值1。

如果您尝试输入负数,onkeyup事件将阻止此操作,如果您在输入数字上使用箭头,onblur事件将解决此部分。

<输入类型=“数字” onkeyup=“if(this.value<0)this.value=1” onblur=“if(this.value<0)this.value=1” >

你可以使用以下命令使type="number"只接受正数:

<input type="number" step="1" pattern="\d+">