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“'”)。