【问题标题】:How to apply Regular Expression to input using jQuery?如何使用 jQuery 将正则表达式应用于输入?
【发布时间】:2014-06-03 02:07:58
【问题描述】:

我有这个代码强制用户在输入中只输入数字:

$("#Day").keyup(function()
{
 var test =new RegExp( "/\D/G");
 if(test.test($("#Day").val()))
     $("#Day").val(replace("/\D/G" , ""));
});

但它让我可以输入非数字并且控制台中没有显示错误。

【问题讨论】:

  • 为了清楚起见,该代码不会阻止某人输入数字,而是会删除任何输入的数字。 (如果用户在一个单词的中间输入,插入点会改变,这会很烦人)
  • @KevinB 如何防止用户输入非数字?
  • 交换它并仅在提交发生或模糊时测试该值,此时您可以显示适当的错误消息。
  • @majidgeek,看看我的回答

标签: javascript jquery regex validation input


【解决方案1】:

这行得通:

JSFIDDLE:http://jsfiddle.net/4RWBU/

我以某种方式编辑了您的原始代码。我将事件类型从keyup 更改为keydown。如果我们使用keydown,我们实际上可以阻止按下的键显示,但我认为使用keyup 不可能实现(键已经显示)。

$("#Day").keydown(function(e)
{
  var test = /[0-9]/; //regex
  var value = String.fromCharCode(e.keyCode); //get the charcode and convert to char
  if (value.match(test)) { 
     return false; //dont display key if it is a number
  }       
});

【讨论】:

  • @majidgeek 它在小提琴中完美运行。检查小提琴
  • 让用户退格,使用这个正则表达式:[0-9\b]
【解决方案2】:

您可以在没有正则表达式的情况下做到这一点:

type="number" 添加到您的输入中,您应该可以正常工作。

但是,如果你想支持 IE 和 HTML 4 用户,你也可以这样做:

$("#Day").keyup(function () {
    var test = /\D/;
    if (test.test($(this).val())) {
        $("#Day").val($(this).val().replace(/\D/g, ""));
    }
});

Demo

【讨论】:

    猜你喜欢
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2017-03-14
    • 1970-01-01
    相关资源
    最近更新 更多