jqueryvalidation插件自定义错误的位置

使用以下forms的jQuery Validation插件:

<form id="information" method="post" action="#"> <fieldset> <legend>Please enter your contact details</legend> <span id="invalid-name"></span> <div id="id"> <label for="name">Name: (*)</label> <input type="text" id="name" class="details" name="name" maxlength="50" /> </div> <span id="invalid-email"></span> <div id="id"> <label for="email">Email: (*)</label> <input type="text" id="email" class="details" name="email" maxlength="50" /> </div> </fieldset> <fieldset> <legend>Write your question here (*)</legend> <span id="invalid-text"></span> <textarea id="text" name="text" rows="8" cols="8"></textarea> <div id="submission"> <input type="submit" id="submit" value="Send" name="send"/> </div> <p class="required">(*) Required</p> </fieldset> </form> 

我怎样才能把错误内部的标签? (#无效名称,#无效电子邮件,#无效文本)

我阅读错误安置文件,但我没有得到它的工作原理。 是否有可能处理每个单一的错误,并将其放置在指定的元素?

谢谢

这是一个基本的结构,你可以在方法中使用任何你想要的select器。 你有错误元素和无效的元素。

 jQuery.validator.setDefaults({ errorPlacement: function(error, element) { error.appendTo(element.prev()); } }); 

或者以目标ID,你可以做

 jQuery.validator.setDefaults({ errorPlacement: function(error, element) { error.appendTo('#invalid-' + element.attr('id')); } }); 

没有testing,但应该工作。

您也可以在需要的地方手动添加错误标签。 在我的具体情况,我有一个更复杂的formscheckbox列表等插入或插入后将打破布局。 而不是这样做,您可以利用validation脚本将评估是否存在指定字段的现有标签标签并使用它。

考虑:

 <div id="id"> <label for="name">Name: (*)</label> <input type="text" id="name" class="details" name="name" maxlength="50" /> </div> 

现在添加以下行:

<label for="name" class="error" generated="true"></label>

这是标准的错误标签:

 <div id="id"> <label for="name">Name: (*)</label> <input type="text" id="name" class="details" name="name" maxlength="50" /> </div> <div id="id-error"> <label for="name" class="error" generated="true"></label> <div> 

jQuery将使用这个标签而不是生成一个新的标签。 对不起,我找不到任何官方文档,但发现了这种行为的其他职位。

我发现使用.insertAfter而不是.appendTo的作品:

 jQuery.validator.setDefaults({ errorPlacement: function(error, element) { error.insertAfter('#invalid-' + element.attr('id')); } }); 

我正在使用validation程序的元数据扩展..(注意,我设置它使用标记上的数据元属性…)

 <input ... data=meta='{ errorLabel: "#someotherid" ,validate: { name:true } }' > 

然后在代码中…

 jQuery.validator.setDefaults({ errorPlacement: function(error, element) { error.appendTo($( $(element).metadata().errorLabel )); } }); 

我一直在使用元数据来获得许多类似的function,这些function相当不错…请注意,我使用元数据周围的单个滴答(撇号),这样您就可以使用JSON序列化服务器端注入标签的那部分(应该在string周围使用双引号)…字面上的“可能”是一个问题,(在string中用“\ x27”replace“'”)。