jQuery防止用户使用正则表达式不匹配时输入正则表达式

问题描述 投票:0回答:2

每次用户输入,使用正则表达式检查值,如果正则表达式不匹配,我试图限制用户进一步输入到输入字段中

使用键盘输入事件,preventdefault永远不会触发,使用键盘输入事件,用户根本无法输入,因为在开始时,输入字段中的值显示为“”(无)

on keyup val="2"

on keypress val="1"

var discountRegex = /(^100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1,2})?)$/
            $("#" + (idOfElement)).on("keyup",function (e) {

                var val=this.value
                var k = e.keyCode
                if(k==46 ||(k > 48 && k <97)){
                    console.log(k)
                    return discountRegex.test(val);
                }

            });

在上面的代码中,idOfElement是我关注的任何字段上的ID。

javascript jquery regex preventdefault
2个回答
0
投票
请参考示例代码。如果输入键无效,输入将不接受。也请在评论中找到相同的小提琴。

<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'); } }); });


0
投票
您可以检查正则表达式是否匹配,如果不匹配,可以像下面的示例一样删除最后一个字符

我更新了带有keydown示例的代码

Example

© www.soinside.com 2019 - 2024. All rights reserved.