jQuery验证插件无法验证前半部分表单的问题

时间:2011-03-16 00:16:05

标签: jquery jquery-plugins jquery-validate validation

我正在使用jQuery和Validate Plugin以及Nathan Long的真棒方法require_from_group,遗憾的是我在验证表单中的其他字段时遇到了问题。

任何超出必填字段集的内容都没有正确显示错误消息。

这个(加上jQuery 1.4.2和Validate插件)是我的代码:

<form>

<label for="fullName">Name <em>required</em></label>
<input id="fullName" name="fullName" type="text" class="required"><br />

<fieldset>
<legend>Enter 1 of 3 emails <em> required</em></legend>
<label for="field1">field1</label><input id="field1" class="group_required email" type="text" name="field1" /><br />
<label for="field2">field2</label><input id="field2" class="group_required email" type="text" name="field2" /><br />
<label for="field3">field3</label><input id="field3" class="group_required email" type="text" name="field3" /><br />
</fieldset>

<input name="submitbutton" type="submit" />

</form>


<script>
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
    numberRequired = options[0];
    selector = options[1];
    //Look for our selector within the parent form
    var validOrNot = $(selector, element.form).filter(function() {
         // Each field is kept if it has a value
         return $(this).val();
         // Set to true if there are enough, else to false
      }).length >= numberRequired;

        if(!$(element).data('being_validated')) {
            var fields = $(selector, element.form);
            //.valid() means "validate using all applicable rules" (which 
            //includes this one)
            fields.data('being_validated', true).valid();
            fields.data('being_validated', false);
        }
        return validOrNot;
        // {0} below is the 0th item in the options field
    }, jQuery.format("Please fill out at least {0} of these fields."));


$(document).ready(function(){

    $("form").validate({
         debug: true,
    });

    jQuery.validator.addClassRules("group_required", {require_from_group: [1, ".group_required"]});

});

</script>

实际页面更复杂,但这是复制问题所需的所有代码。提交表单而不填写任何字段,您将在组中的3旁边看到错误消息,但不会看到名称字段。如果在字段集验证后,名称字段在HTML中,则可以正常工作。给名称字段焦点然后模糊会产生正确的错误消息,但它不会出现在提交中。

我在原始问题的评论中看到其他人遇到此问题,但没有看到任何回复:(

评论:

fields.data('being_validated', true).valid();

修复了错误信息显示问题,但重新介绍了Nathan试图解决的问题。

1 个答案:

答案 0 :(得分:0)

您不必为其他字段添加规则吗?

$("form").validate({
    debug: true,
    rules: {
        'fullName': {
            required: true
        }
    }
});