jQueryvalidationerrorPlacement

这有效:

$("[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"); } } ); 

当我通过validationfunction设置样式时,应用样式以使其起作用:

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

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

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

.validate()方法在默认选项中有一个现有的errorPlacement函数 (主动使用,这是重要的部分,它正在寻找它)并执行扩展以将默认方法替换为您提供的方法…如果您提供一个。 对于几乎每个jQuery插件和您指定的任何选项,这种情况都是如此,它将默认选项与您提供/覆盖的选项合并。 您可以在jQuery插件创作手册中看到这种行为的一些简单示例。