我如何限制" + - e,。"从HTML号码输入?

时间:2017-01-18 08:43:37

标签: html html5 validation input

我有一个HTML编号输入元素:<input type="number">。 问题是我还可以输入以下字符:+ - e E , .我不希望用户能够写。

如何限制这些?

3 个答案:

答案 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范围内(包括数字键盘),则不要将字符添加到输入中。