jquery验证插件带有屏蔽输入,错误验证电话号码

时间:2013-03-07 16:28:14

标签: jquery jquery-validate maskedinput

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

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

        $("#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网站上使用的电话号码。

1 个答案:

答案 0 :(得分:1)

您不应该需要onfocusout回调函数...这是默认行为。此外,errorClass: "error"是默认值。 See documentation for more info

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

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

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

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


修改

用户要注意:skip_or_fill_minimum规则中存在一个开放的Github问题。

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