javascript - JavaScript 中的许可证号验证

标签 javascript

我创建了一个 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/

相关文章:

javascript - 将作为unit8array接收到的数据流作为pdf保存到前端的文件系统中

javascript - OnClick 不起作用

javascript - 这个图像 slider 什么也没有开始,为什么?

javascript - 单击所选选项的特定区域时,如何防止打开 material-ui 选择选项

javascript - 按天 javascript 的功能数量

javascript - OneSignal 删除通知

javascript - 将 Observable 数组转换为嵌套 JSON

javascript - 异步/等待隐式返回 promise ?

javascript - 谷歌闭包生成的具有高级设置的代码可以被逆向工程吗?

javascript - 接受文本框中的特定字符