这有效:

$("[id$='_zzz']").rules(
    "add",
    {
        required: true,
        minlength: 8,
        messages: {
            required: "...",
            minlength: jQuery.format("...")
        }
    }
);


错误消息出现。

当我尝试设置消息样式时,这不起作用:

$("[id$='_zzz']").rules(
    "add",
    {
        required: true,
        minlength: 8,
        messages: {
            required: "...",
            minlength: jQuery.format("...")
        },
        errorElement: "span",
        errorPlacement: function(error, element) {
            error.insertAfter(element);
            error.css("margin", "0 0 0 5px");
        }
    }
);


当我通过validate函数进行样式设置时,将应用样式设置,因此它可以工作:

$('#aspnetForm').validate({
    errorElement: "span",
    errorPlacement: function(error, element) {
        error.insertAfter(element);
        error.css("margin", "0 0 0 5px");
    }
});


为什么不能在规则添加功能中使用错误放置样式?

最佳答案

在第一种方法中,您要将对象上的errorPlacement属性/函数传递给rules方法...它根本不在乎对此进行检查并且不使用它。对于您传入javascript的任何对象,它都必须检查该属性或以某种方式使用它,否则,它只是无关的信息。您也可以将myExtrathing:'ValueHere'添加到对象中,不会破坏任何内容...但是也不会使用。

默认选项中的.validate() method has an existing errorPlacement function(正在积极使用,这是重要的部分,它正在寻找它),并且performs an extend将默认方法替换为您提供的方法...如果您提供的话。对于几乎每个jQuery插件和您指定的任何选项,这种行为都是正确的,它将默认选项与您提供/覆盖的默认选项合并。您可以看到此行为in the jQuery plugin authoring manual的一些简单示例。

10-06 11:28