【问题标题】:input type number, accepts number only not letter jquery输入类型数字,只接受数字不接受字母 jquery
【发布时间】:2015-03-12 10:01:09
【问题描述】:
$("#number").bind('keyup change click', function() {
            if ($(this).val().match(/^\d+$/)) {

            } else {
                alert("Not a number");
            }

这是我的代码,用于获取仅来自用户的数字输入。没关系,但我遇到了start of click 的问题;当我点击它会alert 它不是一个数字,即使它仍然是empty 所以我添加了另一个代码:

if ($(this).val().length === 0) {
}

从代码开始。它确实解决了空或开始单击的问题,问题是当我输入lettersdoes not alert 消息时。如何解决这个问题?任何建议表示赞赏

【问题讨论】:

  • 为什么 === 不是 ==
  • 因为它有一个警告 Expected "===" and instead saw "==". 我在 netbeans 工作所以我摆脱了警告
  • 你为什么要听click事件?
  • 使用=== 通常是一种很好的做法,因为当您使用== 时,JavaScript 会处理类型转换。例如0 == '',但'' != 0

标签: javascript jquery html validation input


【解决方案1】:

@Rias 有上面的答案,但是,您也可以执行以下操作。

$("#number").bind('keyup change click', function() {
    //Check only if the text box is not empty
    if ( $.trim($(this).val()) != "") {
        if ($(this).val().match(/^\d+$/)) {
        } else {
            alert("Not a number");
        }
    }
});

演示@Fiddle

更新:如果您想删除任何非数字字符,请尝试以下操作。

$("#number").bind('keyup change click', function() {

    if ( $.trim($(this).val()) != "") {
        if ($(this).val().match(/^\d+$/)) {
        } else {
            alert("Not a number");
            $(this).val( $(this).val().replace(/[^0-9]+/gi, "") );
        }
    }
});

【讨论】:

  • 即使我写信也不报警
  • 现在在我的回答中查看演示。
  • 如果最后输入的键不是数字,你应该删除它,否则如果你输入“a”然后 1 它仍然会告诉你它不是数字,因为它匹配“a "。
  • @briosheje 没关系,因为我只想要数字,所以 a1 前面仍然符合我不输入字母的需要。
  • jsfiddle.net/dnfygrk1/1 就是这个。因此,如果我输入“1”,然后输入“2”,然后输入“a”,它会告诉我它不是一个数字,并且会删除它,保持 1 和 2 允许我写更多的数字。
【解决方案2】:

将正则表达式更改为/^\d*$/,它也将接受一个空字段,因为量词*接受0个或多个\d数字类型的字符,而+需要1个或多个数字来匹配.

$(document).ready(function() {


  $("#number").bind('keyup change click', function() {
    if ($(this).val().match(/^\d*$/)) {

    } else {
      alert("Not a number");
    }
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="number">

【讨论】:

  • 这不好,我输入了多个单词并得到多个错误,并且每次我专注于输入时,都会显示警报。
  • 我刚刚调整了初始代码。您可能需要自己考虑一下。
  • 另外,这取决于你做什么,如果没有数字,你可以删除该字段或最后一个单词或其他任何内容。当然,警报是令人不安的,应该在最终实现中,但被要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多