我正在使用JQUery工具 - Validation Error Summary
/* adds an effect called "wall" to the validator */
$.tools.validator.addEffect("wall", function(errors, event) {
// get the message wall
var wall = $(this.getConf().container).fadeIn();
// remove all existing messages
wall.find("p").remove();
// add new ones
$.each(errors, function(index, error) {
wall.append(
"<p><strong>" +error.input.attr("name")+ "</strong> " +error.messages[0]+ "</p>"
);
});
// the effect does nothing when all inputs are valid
}, function(inputs) {
});
如果您可以看到图像一切正常,我想要的是,通过更改此代码而不是文本框名称,我希望在错误MSG之前显示标签文本。
先谢谢。 编辑:HTML
<tbody style="" class="user_panel" id="customer_info">
<tr>
<td valign="top"><label class="label">Contact name:</label>
<input type="text" value="" name="contact_name" class="" style="width:227px"></td>
<td> </td>
</tr>
<tr>
<td valign="top"><label class="label">Measurement:</label>
<select value="" data-message="Measurement is required1" required="required" name="measurement" style="width: 231px; border-color: red;">
<option value="">-select-</option>
<option value="1">mm</option>
<option value="2">inches</option>
</select></td>
<td> </td>
</tr>
<tr>
<td valign="top"><label class="label">Phone personal:</label>
<input type="text" value="" data-message="Pers cont. num is required" required="required" name="contact_number_person" class="" style="width: 227px; border-color: red;"></td>
<td> </td>
</tr>
<tr>
答案 0 :(得分:1)
将 //添加新的评论下的JavaScript更改为:
$.each(errors, function(index, error) {
wall.append(
"<p><strong>" +error.input.prev().html()+ "</strong> " +error.messages[0]+ "</p>"
);
});
它不会打印输入对象的name属性,而是在上一个元素中打印html,这是label
答案 1 :(得分:1)
如果您将属性for
添加到标签中,例如
<label class="label" for="contact_name">Contact name:</label>
然后你可以:
wall.append(
"<p><strong>" +$("label[for='"+ error.input.attr("name")+"']").text()+ "</strong> " +error.messages[0]+ "</p>"
);
这解决了标签和输入之间另一个元素的可能性。或者,如果您希望标签跟随输入。