我正在使用输入类型数字,它可以防止字符,但是不能防止正号,负号或字符。但是我的要求是防止所有符号。
opt
我已经进行了处理,并创建了自定义的正则表达式,并且工作正常,但是我想知道为什么输入类型编号可以正常工作,以及如何解决该问题。
答案 0 :(得分:0)
您可以使用简单的最低数量限制来做到这一点。像这样:
<input min="0" type="number" step="1">
现在添加+
或-
会使字段值无效,而step=1
适用于只需要无符号整数的情况。如果不需要,只需将其删除。
修改
如果您不想+
和-
迹象出现在文件中,并且不接受该输入,则需要使用一些js。
这是我认为最简单的纯js解决方案:
您的html代码:
<input min="0: type="number" step="1" onkeypress="removeSigns()" id="my-input">
现在您需要将此小脚本添加到页面中:
function removeSigns() {
var input = document.getElementById('my-input');
input.value = parseInt(input.value.toString().replace('+', '').replace('-', ''))
此脚本获取具有my-element
id的元素,然后覆盖其值。
新值是将+
和-
替换为空字符串(实际上是从字符串中删除)后的旧值的int版本。
当您只有一个输入时,此解决方案很好,如果您有更多的数字输入,则应将removeStrin
更改为提供this
中onkeypress
的输入对象的版本。但是由于解决方案的简单性,我不添加该版本。
}
答案 1 :(得分:0)
因为the spec确实应该这样工作。输入的数字可以接受floating point numbers,包括负号和e
或E
字符:
浮点数完全由以下几部分组成 以下顺序:
- 可选地,第一个字符可以是“
-
”字符。- “
0—9
”范围内的一个或多个字符。- (可选)以下部分,按完全相同的顺序排列:
- “
.
”字符- “
0—9
”范围内的一个或多个字符- (可选)以下部分,按完全相同的顺序排列:
- “
e
”字符或“E
”字符- (可选)“
-
”字符或“+
”字符- “
0—9
”范围内的一个或多个字符。
答案 2 :(得分:0)
您可以使用js
$('input').keypress(function (e) {
var txt = String.fromCharCode(e.which);
if (!txt.match(/[0-9]/)) {
return false;
}
});