HTML5输入类型编号不能阻止加号,减号

时间:2018-10-12 10:39:04

标签: javascript regex html5

我正在使用输入类型数字,它可以防止字符,但是不能防止正号,负号或字符。但是我的要求是防止所有符号。

opt

我已经进行了处理,并创建了自定义的正则表达式,并且工作正常,但是我想知道为什么输入类型编号可以正常工作,以及如何解决该问题。

3 个答案:

答案 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更改为提供thisonkeypress的输入对象的版本。但是由于解决方案的简单性,我不添加该版本。     }

答案 1 :(得分:0)

因为the spec确实应该这样工作。输入的数字可以接受floating point numbers,包括负号和eE字符:

  

浮点数完全由以下几部分组成   以下顺序:

     
      
  1. 可选地,第一个字符可以是“ -”字符。
  2.   
  3. 0—9”范围内的一个或多个字符。
  4.   
  5. (可选)以下部分,按完全相同的顺序排列:      
        
    1. .”字符
    2.   
    3. 0—9”范围内的一个或多个字符
    4.   
  6.   
  7. (可选)以下部分,按完全相同的顺序排列:      
        
    1. e”字符或“ E”字符
    2.   
    3. (可选)“ -”字符或“ +”字符
    4.   
    5. 0—9”范围内的一个或多个字符。
    6.   
  8.   

答案 2 :(得分:0)

您可以使用js

$('input').keypress(function (e) {
    var txt = String.fromCharCode(e.which);
    if (!txt.match(/[0-9]/)) {
        return false;
    }
});