Javascript 如果使用preventdefault不匹配正则表达式,jQuery将阻止用户输入

Javascript 如果使用preventdefault不匹配正则表达式,jQuery将阻止用户输入,javascript,jquery,regex,preventdefault,Javascript,Jquery,Regex,Preventdefault,每次用户输入时,都会用正则表达式检查该值,若regexp不匹配,我将试图限制用户进一步输入输入字段 使用keyup事件,preventdefault从不激发,使用keypress事件,用户根本无法输入,因为在开始时,输入字段中的值显示为“”(无) var discountRegex=/(^100([.]0{1,2})$|(^\d{1,2}([.]\d{1,2}))$/ $(“#”+(idOfElement)).on(“键控”,函数(e){ var val=此值 var k=e.keyCode

每次用户输入时,都会用正则表达式检查该值,若regexp不匹配,我将试图限制用户进一步输入输入字段

使用keyup事件,preventdefault从不激发,使用keypress事件,用户根本无法输入,因为在开始时,输入字段中的值显示为“”(无)

var discountRegex=/(^100([.]0{1,2})$|(^\d{1,2}([.]\d{1,2}))$/
$(“#”+(idOfElement)).on(“键控”,函数(e){
var val=此值
var k=e.keyCode

如果(k==46 | |(k>48&&k您可以检查正则表达式是否匹配,如果不匹配,您可以删除最后一个字符,如下面的示例所示

我用keydown示例更新了代码


请参考示例代码。如果输入键无效,则输入将不接受。另外,请在注释中找到相同的FIDLE

<input type="text">


$(document).ready(function(){
  $("input").bind('keypress', function(e) {
  var str = e.keyCode;
  if (/(^100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1,2})?)$/.test(str)) {
          alert('Invalid')
       e.preventDefault();
    } else {
       alert('Valid');
    }
});
}); 

$(文档).ready(函数(){
$(“输入”).bind('keypress',函数(e){
var-str=e.keyCode;
如果(/(^100([.]0{1,2})$|(^\d{1,2}([.]\d{1,2})$/.test(str)){
警报('无效')
e、 预防默认值();
}否则{
警报(“有效”);
}
});
}); 

没有办法像我们为keyPress所做的那样取消事件吗?我更新了代码。您可以使用函数字符串从keycode获取char。fromCharCode然后返回RegExt的结果。上述代码也接受特殊字符,请帮助我您可以使用keyPress和remove if进行键计算的代码。为什么添加此统计因为这两种方法都不起作用,我试着用keypress和keyup ToFiddle链接来回答上面的正则表达式的值小于100,只能接受最多2个小数点。你可以用所需的正则表达式替换它。你需要帮助正则表达式接受小于100和最多2个小数点吗。?
<input type="text">


$(document).ready(function(){
  $("input").bind('keypress', function(e) {
  var str = e.keyCode;
  if (/(^100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1,2})?)$/.test(str)) {
          alert('Invalid')
       e.preventDefault();
    } else {
       alert('Valid');
    }
});
});