1

我一直在试图弄清楚为什么电话号码的验证会触发电话号码字段。我同时使用Validator 插件和掩码输入插件来为一组字段设置一些验证。我不怀疑这个特定问题与屏蔽输入插件的使用有关,但无论如何我都会提到它。

如果填写了任何字段(扩展字段除外),则所有字段(扩展字段除外)都是必需的。该代码正在做它应该做的事情,但验证正在触发我不想要的额外验证。电话号码正在检查长度,即使我没有在需要的地方编码任何东西。

        $("#requestform").validate({
        rules: {
            namedepa: {
                skip_or_fill_minimum: [6, ".section"]
            },
            techdepa: {
                skip_or_fill_minimum: [6, ".section"]
            },
            conphodepa: {
                skip_or_fill_minimum: [6, ".section"],
                maskedPhone: true
            },
            techemaildepa: {
                skip_or_fill_minimum: [6, ".section"]
            },
            adddepa: {
                skip_or_fill_minimum: [6, ".section"]
            },
            roomdepa: {
                skip_or_fill_minimum: [6, ".section"]
            }
        },
        onfocusout: function (element) {
            $(element).valid();
        },
        focusCleanup: true,
        errorClass: "error"
    });
    var ErrorMessage = " Required";
    jQuery.extend(jQuery.validator.messages, {
        skip_or_fill_minimum: ErrorMessage,
        required: ErrorMessage
    });

我创建了一个JSFiddle来演示我遇到的问题。如果您浏览字段,当您到达并传递电话号码字段时,会出现“您必须输入不超过 10 个字符”的消息。

我不知道从这里去哪里。我创建的 JsFiddle 也有我创建的 maskedPhone 验证器,虽然我不认为这是一个问题,但我已经测试了我在 www.regexpal.com 网站上使用的电话号码。

4

1 回答 1

1

你不应该需要onfocusout回调函数......这是默认行为。也是errorClass: "error"默认的。 有关更多信息,请参阅文档

其次,错误消息是由maxlength="10"电话字段内的属性触发的,并且被屏蔽的输入本身超过 10 个字符。

<input name="phodepa" type="text" maxlength="10" id="phodepa" class="setTelephone section"/>

您修改后的代码:http: //jsfiddle.net/vY22J/

当您选择表单上的所有字段作为规则的一部分时,我不完全确定您为什么要使用该skip_or_fill_minimum规则。当您全部制作required时,没有填写任何内容时会跳过整个表单,这也是插件的默认行为。我想我不理解这种情况下的重点。


编辑

用户当心:规则上有一个开放的 Github 问题skip_or_fill_minimum

https://github.com/jzaefferer/jquery-validation/issues/412

于 2013-03-07T16:41:01.450 回答