我创建了一个 JavaScript 函数来验证美国驾驶执照。问题是功能取决于浏览器。该函数在 IE 中创建错误,但在 MOZILLA 和 CHROME 中运行良好..
我已经验证了它,前三位数字应该是 0 或 1 或 2 或 3。
//license number
var strFilter = /^[0-9]*$/;
var chkVal36 = document.getElementById("license").value;
var chkVal37 = document.getElementById("license").value.length;
var chkVal38 = document.getElementById("license").value;
if ((!strFilter.test(chkVal36)) || ((chkVal36 !== "") && (chkVal36 === 0)) || (chkVal36 !== "") || (chkVal37 !== 8) || ((chkVal38[0] !== 0) && (chkVal38[0] !== 1) && (chkVal38[0] !== 2) && (chkVal38[0] !== 3))) {
alert("Please enter valid 8-digit license number\r\n(Only digits)");
document.getElementById("license").focus();
document.getElementById("license").style.background = "#DFE32D";
document.getElementById("license").value = null;
return false;
}
最佳答案
在旧版本的 IE 中,您无法像 chkVal38[0]
那样进行字符串数组索引。
我建议这个清理和简化的代码:
//license number
var strFilter = /^[0-3][0-9]{7}$/;
var obj = document.getElementById("license");
if (!strFilter.test(obj.value)) {
alert("Please enter valid 8-digit license number\r\n(Only digits)");
obj.focus();
obj.style.background = "#DFE32D";
obj.value = "";
return false;
}
此处的工作示例:http://jsfiddle.net/jfriend00/ZUajd/
变化:
- 将所有验证移至单个正则表达式中(前导 0-3、所有数字和总共 8 个字符)。
- 检索一次 DOM 对象,然后使用该引用,而不是每次都检索它
- 通过设置为“”(不为空)来清除该字段。
关于javascript - JavaScript 中的许可证号验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8223237/