我有一个简单的登录表单,并有jQuery验证替换字段标签,当有错误显示。问题是,一旦错误被清除,标签消失。我想找到一种方法来恢复到以前的标签的内容,或重建标签时字段是合法的......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>
在本质上,当用户提交表单,如果有在电子邮件字段中没有数据,那么对于电子邮件标签获取与错误所取代。但一旦它有了有效的输入,我想要放回原始标签。
在此先感谢您的任何建议,
ž
这是不可能的,但你可能会反复折腾'highlight'和'unhighlight'功能,并从这些保存关闭旧标签,并将其重新设置为“unighighlight”。 – Ryley
感谢您的回复。我实际上已经做出了一个妥协,而不是用错误标签替换之前的标签,而是使用error.appendTo(element.prev())和errorElement:“span”将跨度添加到该标签中。 这并不理想,但至少出现跨度时,错误代码就是我想要的位置,当它消失时,标签保持不变。 我刚刚做了这样的标签和错误完成彼此像句子...例如,“电子邮件地址”“是必需的。”或“电子邮件地址”的格式不正确。“ (PS:很遗憾,看起来换行符不起作用) – Shikarnov
啊,这是一个体面的解决方案,我同意......我建议你发布一个自己问题的答案,并将其标记为已接受(这是100 %确定在StackOverflow)。这样任何发现这个问题的人都会知道一个很好的答案。 – Ryley