【问题标题】:checking for inputted value if numbers or letters using test [duplicate]使用测试检查输入的值是否为数字或字母[重复]
【发布时间】:2017-07-21 21:32:08
【问题描述】:

$('input').on("input", function() {
  if (isWhole($(this).val())) {
    return false;
    //$(this).removeAttr("style").removeClass("not");
  } else {
    //$(this).css("border", "2px solid red").addClass("not");

  }
});


function isWhole(n) {
  return /^\d+$/.test(n);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="" type="text" id="" />

在这个 OP 中,我想让用户只输入数字。如果他们输入字母,则不应被允许,这意味着不应将其写入输入中。

  1. 我用test来测试输入的数据是不是数字。
  2. 当我输入字母时添加注释返回 false 边框。如果我输入的数字边框被删除,这是我想要的结果。
  3. 单独使用 return false 进行了尝试。我假设它不会让输入的字母显示,但它仍在显示。
  4. 如何不让用户输入字母

【问题讨论】:

  • Can you use &lt;input type='number'&gt; 为您省去了使用 js 进行额外检查的所有麻烦。 htmlgoodies.com/html5/tutorials/…
  • @ClydeLobo 我不喜欢使用数字类型输入的上下键

标签: jquery


【解决方案1】:

测试该值,如果一个数字允许它 - 或者在这种情况下,允许它的数字部分

$('input').on("input", function(e) {
  var val = this.value;
  if (!isWhole(val)) {
    var num = parseInt(val);
    $(this).val(isNaN(num)?"":num);
  }
});


function isWhole(n) {
  return /^\d+$/.test(n);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="" type="text" id="" />

【讨论】:

  • 问题为什么我的代码不起作用?
  • 因为你没有通过 return false 停止任何事情
  • 我需要 4 分钟打勾 :)
  • 我喜欢它............
【解决方案2】:

只需将任何非数字符号替换为空字符串:

$('input').on("input", function(e) {
    $(this).val($(this).val().replace(/[^\d]/, ''));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" />

【讨论】:

  • 问题为什么我的代码不起作用?
猜你喜欢
  • 2016-02-10
  • 2011-02-09
  • 2015-12-17
  • 2018-05-11
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
相关资源
最近更新 更多