我想使用错误消息,但不必为每个表单写出消息,本网站上有超过20个。表格都有这种结构:
<li>
<label for="firstName">First Name*</label>
<input name="firstName" id="firstName" type="text">
</li>
<li>
<label for="lastName">Last Name*</label>
<input name="lastName" id="lastName" type="text">
</li>
我有以下验证规则:
$.validator.messages.required = function (param, input) {
msg = $("input").prev("label").eq(0).text();
return 'Please fill out the ' + msg + ' required field.';
}
这将为每个错误插入第一个错误字段标签中的文本。在此之前,它创建了一个字符串,其中包含每个错误字段的标签,用于每个错误“请填写名字,姓氏,(等)必填字段。”
如何获取每个错误类的上一个标签并使用该文本?我不能让.each()在这里工作。感谢。
这是fiddle。
答案 0 :(得分:1)
将选择器从$("input")
更改为$(input)
。前者是所有<input>
元素的选择器...后者是使用input
函数参数的选择器,该参数表示正在验证的当前元素。
msg = $(input).prev("label").text();
DEMO:http://jsfiddle.net/n2cL6u7j/1/
注意:删除click
处理程序并将其替换为DOM ready事件处理程序。 .validate()
方法仅用于初始化插件,因此只需在DOM就绪时调用一次。否则,当表单加载到页面上时,它将被称为一次。在你的jsFiddle中,每次点击表单本身的提交按钮时,你都会调用.validate()
,这是没有意义的。
原始答案: (有一些问题)
只需使用errorPlacement
选项操作required
规则的消息,如下所示......
errorPlacement: function (error, element) {
if (error.text() === "required") { // <- only when the 'required' rule is used
lbl = $(element).prev('label').text();
error.text('Please fill out the ' + lbl + ' required field.');
}
error.insertAfter(element); // <- default placement
},
因为我的条件是查看&#34; required&#34;在required
规则的消息中,我全局更改了该消息。这只是为了简化我的条件,你可以完全跳过它。
$.validator.messages.required = function (param, input) {
return 'required';
}
答案 1 :(得分:-1)
试试这个:
$("input").each(function(i,op)
{
alert($(this).prev("label").text());
});