【问题标题】:Can you validate fieldsets individually using the jquery validation plugin from bassassistance?您可以使用 bassassistance 中的 jquery 验证插件单独验证字段集吗?
【发布时间】:2010-01-18 11:37:27
【问题描述】:

我有一个使用验证插件的表单,但我需要使用稍微不同的标准来验证表单的单独部分 - 大多数字段将错误放在下一个表格单元格中,但对于一个字段我需要错误放在别的地方。

这是主要表单字段的验证功能:

jQuery("#form2").validate({
    rules: {
        street: {
            required: true,
            minlength: 5
        },
        city: {
            required: true,
            minlength: 3
        },
        state: {
            required: true
        },
        zip: {
            required: true,
            minlength: 5
        }
    },
    messages: {
        street: {
            required: "Please enter your address",
            minlength: "Address is too short"
        },
        city: {
            required: "Please enter your town/city",
            minlength: "Town/City is too short"
        },
        state: {
            required: "Please enter your county"
        },
        zip: { 
            required: "Please enter your postcode",
            minlength: "Postcode is too short"
        }
    },
    errorPlacement: function(error, element) {
            error.appendTo(element.parent("td").next("td"));
    }
}); // end validate

基本上我也想单独验证这个字段集,所以可以为errorPlacement使用不同的值:

    jQuery("#elecfields").validate({
    rules: {
        sup1: {
            minlength: 2
        }
    },
    messages: {
        sup1: {
            minlength: "must be 2 digits"
        }
    },
    errorPlacement: function(error, element)
    {
        // different error placement is needed here
    }

}); // end elecfields validate

elecfields 是 form2 中的一个字段集 - 但这似乎不起作用。

似乎 errorPlacement 必须适用于表单中的所有字段,但我只有一个字段需要将错误放置在其他地方。关于如何实现这一点的任何想法?非常感谢任何帮助。

【问题讨论】:

    标签: jquery jquery-validate errorplacement


    【解决方案1】:

    你是对的。 errorPlacement 处理程序确实适用于整个表单,但您也可以在其中设置逻辑以在某些情况下以不同方式处理错误。例如,您可以直接查看元素属性并注意有问题的项目,或者您可以根据共同的父级过滤它们 - 在您的情况下是字段集。示例:

    $("#form").validate({
        /* */
        errorPlacement: function(error, element)
        {
            if( element.closest("#subFieldSet").length ) {
                /* special handling */
            } else {
                /* generic handling */
                error.insertAfter(element);
            }
        }
    });
    

    【讨论】:

      【解决方案2】:

      如何为不同的部分使用多个表单?

      这样您就可以为不同的表单设置不同的规则,并且不会弄乱 errorPlacement 选项。

      【讨论】:

      • 这对我没有帮助,因为我需要一张表格。 errorPlacement 更改是完美的答案。
      猜你喜欢
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 2023-04-09
      • 2012-10-18
      相关资源
      最近更新 更多