使用jQuery校验字母数字值失效问题排查
问题解决
你的代码里有两个关键问题,导致校验完全失效:
jQuery选择器写错了
你获取输入框值的时候,id选择器漏掉了#符号:var dangUS1 = $("dangerousUS1").val(); // 错误:缺少#,无法选中目标输入框正确写法应该是:
var dangUS1 = $("#dangerousUS1").val(); // 正确:通过#匹配id元素因为没加
#,jQuery找不到目标输入框,dangUS1会变成undefined。调用正则校验时,JS会把undefined自动转为字符串"undefined",这个字符串全是字母,刚好符合你的正则规则,所以不管输入@、!这类非法字符,都会弹出"correct"。正则表达式的小优化(可选)
当前正则里的-放在字符集末尾不会引发范围匹配问题,但如果后续调整字符顺序时不小心把它移到中间,就会变成范围匹配(比如a-z)。保险起见,可以把-转义或者移到字符集最开头:// 转义写法 var regx = /^[A-Za-z0-9 _\.-]+$/; // 或者移到开头 var regx = /^[-A-Za-z0-9 _.]+$/;
修正后的完整代码:
if (dangerous == "Yes" && $("#dangerousUS1").val() != '' ) { var dangUS1 = $("#dangerousUS1").val(); var regx = /^[A-Za-z0-9 _.-]+$/; if (regx.test(dangUS1)) { alert("correct"); } else { alert('You values should include Alpha numeric values'); } }
内容的提问来源于stack exchange,提问作者Jashvita
相关产品推荐
相关产品推荐

