我有一个简单的登录表单,并且在显示错误时让jQuery验证替换字段标签。问题是,一旦清除错误,标签就会消失。我想找到一种方法可以恢复到之前标签的内容,或者在字段有效时重建该标签......
这是我的代码:
$(document).ready(function(){
$("#login").validate({
errorPlacement: function(error, element) {
element.prev().replaceWith(error);
},
rules: {
"email": {
required: true,
email:true,
},
"password": {
required: true,
minlength: 6
}
},
messages: {
email: {
required: "Please enter your email address.",
email: "Please enter a <u>valid</u> email address"
},
password: {
required: "Please enter your password.",
minlength: "Please enter a password with 6 characters or more."
}
},
});
});
HTML:
<form name="login" id="login" method="post" action="authenticate.php">
<p>
<label for="email">Email Address:</label>
<input type="text" name="email" id="email" class="required email" />
</p>
<p>
<label for="password">Password:</label>
<input type="password" name="password" id="password" class="required" />
</p>
<p>
<input type="submit" value="Log In" id="submit" />
</p>
实质上,当用户提交表单时,如果“电子邮件”字段中没有数据,则电子邮件的标签将替换为错误。但是一旦它有有效的输入,我想放回原始标签。
提前感谢任何建议,
ž
答案 0 :(得分:3)
我实际上制定了一个妥协方案,我不是用错误标签替换以前的标签,而是使用error.appendTo(element.prev())和errorElement:“span”将span添加到该标签中。这是新代码:
$(document).ready(function(){
$("#login").validate({
errorElement: "span",
errorPlacement: function(error, element) {
error.appendTo(element.prev());
//element.prev().replaceWith(error);
},
rules: {
"email": {
required: true,
email:true,
},
"password": {
required: true,
minlength: 6
}
},
messages: {
email: {
required: " is Required",
email: " is Improperly Formatted"
},
password: {
required: " is Required",
minlength: " is not Long Enough"
}
},
});
});
它不太理想,但至少在跨度出现时,错误代码是我想要的地方,当它消失时,标签保持不变。我只是做了它,所以标签和错误完成了对方的句子......例如,“电子邮件地址”“是必需的。”或“电子邮件地址”“格式不正确。”
感谢所有在此贡献的人,
ž
答案 1 :(得分:1)
您可以删除
errorPlacement: function(error, element) {
element.prev().replaceWith(error);
},
并且消息应该出现在文本框旁边。
答案 2 :(得分:0)
您可以尝试removeChild(label),并在错误发生时附加一个新的。切换标签似乎很明显