我有一个HTML编号输入元素:<input type="number">
。
问题是我还可以输入以下字符:+ - e E , .
我不希望用户能够写。
如何限制这些?
答案 0 :(得分:9)
这将是实现这一目标的一种方式:
var ageInput = document.getElementById("age")
ageInput.addEventListener("keydown", function(e) {
// prevent: "e", "=", ",", "-", "."
if ([69, 187, 188, 189, 190].includes(e.keyCode)) {
e.preventDefault();
}
})
<input type="number" id="age">
答案 1 :(得分:1)
您不应仅依赖<input type="number">
,因为这仅适用于具有不同行为的现代浏览器,具体取决于浏览器。
使用jQuery执行其他检查(使用正则表达式):
$('#my-input').keypress(function() {
var inputValue = $(this).val();
var reg = /^\d+$/;
if (reg.test(inputValue)){
alert("input value is integer");
} else {
alert("input value is not an integer");
}
});
答案 2 :(得分:0)
要限制这些值,请使用javascript捕获按键事件,并防止输入这些字符。 我们从事件中捕获keyCode,并通过ASCII码将输入限制为不允许这些字符。
document.getElementById('my-number-input').onkeypress = function(e) {
if(!e) e = window.event;
var keyCode = e.keyCode || e.which;
if(!((keyCode >= 48 && keyCode <= 57) ||
(keyCode >=96 && keyCode <= 105))) {
e.preventDefault(); //This stops the character being entered.
}
}
上面的IF语句指出,如果键码不在键盘上的0-9范围内(包括数字键盘),则不要将字符添加到输入中。