输入中仅允许数字和“。”(DOT)

时间:2019-03-08 05:29:59

标签: jquery html

我只允许“。”以及其他一些字符或其他字符。

以下代码正常运行,但允许使用“。”

html和js

     <input type="text" class="form-control" id="PhoneNo" name="PhoneNo" minlength="10" maxlength="12" placeholder="Enter Phone No">

     $('#PhoneNo').keyup(function()
        {
            if (/\D/g.test(this.value))
            {
              this.value = this.value.replace(/\D/g, '');
            }
        });

3 个答案:

答案 0 :(得分:2)

使用以下代码。如果它与正则表达式不匹配(仅匹配数字和点),它将删除最后一个值。

每次按下一个键(不释放它,因此该值都不在输入中)时,.keypress()功能就会激活。也就是说,如果值与正则表达式不匹配,请删除最后一个字符。可行,但因为它在按键上,并且在释放键时该字符算作“正在键入”(在.keyup()上,您只需添加一个.keyup()函数即可解决该问题。

let pattern = new RegExp("^[0-9.]+$");

$("#PhoneNo").keypress(function() {
  if (!pattern.test($(this).val())) {
    $(this).val($(this).val().slice(0, -1));
  }
});

$("#PhoneNo").keyup(function() {
  if (!pattern.test($(this).val())) {
    $(this).val($(this).val().slice(0, -1));
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="form-control" id="PhoneNo" name="PhoneNo" minlength="10" maxlength="12" placeholder="Enter Phone No">

答案 1 :(得分:1)

请尝试以下操作:

if (/[^\d\.]/g.test(this.value))
{
    this.value = this.value.replace(/[^\d\.]/g, '');
}

答案 2 :(得分:1)

也尝试一下:

<!DOCTYPE html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    </head>
    <body>
        <input type="text" class="form-control" id="PhoneNo" name="PhoneNo" minlength="10" maxlength="12" placeholder="Enter Phone No" />

        <script>
            $("#PhoneNo").keyup(function (e) {
                checkNumbersOnly($(this));
            });

            function checkNumbersOnly(myfield)
            {
                if (/[^\d\.]/g.test(myfield.val()))
                {
                    myfield.val(myfield.val().replace(/[^\d\.]/g, ''));
                }
            }
        </script>

    </body>
</html>