0

我编写了一个验证输入的例程。它工作正常,但是当我输入字符 a 时,它就接受了。这是我的代码。

function isValidPhoneNumber(val) {
        var flag = true;
        var invalidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@!$#";
        if (flag) {
            for (index = 0; index <= val.length - 1; index++) {
                var phchars = val.substring(index, index + 1);
                if (invalidChars.indexOf(phchars) > 0) {
                    flag = false;
                    break;
                }
            }
        }
        return flag;
    }

假设如果我给了 val='+9122a5669974' 那么它返回 true。indexof 函数无法找到 a....为什么。请告诉我例行程序中有什么问题。如果发现存在于 invalidChars 变量中的任何字符,则例程应返回 false,但当找到时例程返回 true。帮助我发现错误。谢谢

4

3 回答 3

2

请尝试以下代码行。

if (invalidChars.indexOf(phchars) != -1) {
于 2013-06-28T09:43:15.543 回答
2

你的线

if (invalidChars.indexOf(phchars) > 0) {

应该

if (invalidChars.indexOf(phchars) > -1) {

但是,我会考虑使用正则表达式作为更好的方法。

于 2013-06-28T09:44:56.140 回答
1

试试这个方法

jQuery.validator.addMethod("mobileNL", function(value, element) {
return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-  \s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(value);
}, "Please specify a valid mobile number");

提到的方法在附加方法.js 中可用

使用 jquery 验证插件进行客户端验证很有趣。重要的是,您可以向其中添加自定义方法。

  1. 下载并添加以下脚本到母版、布局或您要启用客户端验证的任何位置。

    1.1 jquery-1.8.3.min.js(或以上) 链接:http ://code.jquery.com/jquery-1.8.3.min.js

    1.2 jquery.validate.min.js & 附加方法.js ( http://jqueryvalidation.org/ )

2.现在创建您的验证规则和消息。例如

var jq = jQuery.noConflict(true);
(function ($) {
$(document).ready(function () {

    $('#FormName').validate({
        highlight: function (element, errorClass, validClass) {
            $(element.form).find("input[id=" + element.id + "]").addClass("input");

        },
        rules: {
            PhoneNumber: {
                required: false,
                mobileNL: true,
                max: 10
            }

        },
        messages: {
            PhoneNumber: {
                mobileNL: "Please enter a correct phone",
                 max: "Please specify the number less or equal to 10"
            }

        },
        submitHandler: function (form) {
            form.submit();
            return false;
        }
    });
});
 })(jq);

新建一个js文件,保存为jq_validation.js 添加上面的代码。并按此顺序调用

  1. 你的 html 应该是这样并完成的。

    "<%: Html.TextBoxFor(model => model.PhoneNumber, new { @class = "input" })%>"

于 2013-06-28T09:51:59.390 回答