目前我有以下代码
<input type="number" />
结果是这样的
右边的选择器允许数字变为负数。我该如何预防呢?
我对使用type="number"有疑问,它造成的问题比它解决的要多,我无论如何都要检查它,所以我应该回到使用type="text"吗?
目前我有以下代码
<input type="number" />
结果是这样的
右边的选择器允许数字变为负数。我该如何预防呢?
我对使用type="number"有疑问,它造成的问题比它解决的要多,我无论如何都要检查它,所以我应该回到使用type="text"吗?
当前回答
我已经找到了防止负数的另一种解决方案。
<input type="number" name="test_name" min="0" oninput="validity.valid||(value='');">
其他回答
如果您尝试输入负数,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();
通过在输入标记中添加onkeypress,可以强制输入只包含正整数。
<input type=“number” onkeypress=“return event.charCode >= 48” min=“1” >
在这里,事件。charCode >= 48确保只返回大于或等于0的数字,而min标记确保通过在输入栏内滚动可以得到最小值1。
我找不到完美的解决方案,因为有些工作是输入,但不是复制和粘贴,有些是相反的方式。这个解决办法对我很管用。它防止负数,输入“e”,复制和粘贴“e”文本。
创建一个函数。
<script language="JavaScript">
// this prevents from typing non-number text, including "e".
function isNumber(evt) {
evt = (evt) ? evt : window.event;
let charCode = (evt.which) ? evt.which : evt.keyCode;
if ((charCode > 31 && (charCode < 48 || charCode > 57)) && charCode !== 46) {
evt.preventDefault();
} else {
return true;
}
}
</script>
将这些属性添加到输入中。这两个可以防止复制和粘贴非数字文本,包括“e”。你需要同时拥有两者才能生效。
<input type="number" oninput="validity.valid||(value='');" onpress="isNumber(event)" />
如果你正在使用Vue,你可以参考这里的答案。我已经将它提取到一个可以重用的mixin中。
试试这个:
Yii2 : Validation rule
public function rules() {
return [
['location_id', 'compare', 'compareValue' => 0', 'operator' => '>'],
];
}