我有一些jQuery检查用户是否输入了正确的电子邮件地址。然后,如果用户无效,用户可以返回并更改他/她的电子邮件。但是,我的代码将导致相同的错误信息两次,因为错误不断被添加到我的errors
div中。如何将此更改为仅允许错误一次附加?如果email
变量为true
,我还想删除错误。此div中还存在其他验证错误。
jQuery的:
var email = $('#email').val();
email = validateEmail(email);
if (email = "false") {
$('#errors').append("<p>Please enter a valid email</p>");
}
validateEmail
将返回true
或false
,具体取决于电子邮件是否有效。
答案 0 :(得分:13)
var email = $('#email').val();
email = validateEmail(email);
if (email == "false"){
$('#email_error').remove();
$('#errors').append("<p id='email_error'>Please enter a valid email</p>");
}
答案 1 :(得分:4)
当您附加电子邮件错误时,请使用“ emailerror ”类对其进行规范,
$('#errors').append("<p class="emailerror">Please enter a valid email</p>");
但在追加之前,只需删除具有“emailerror”类
的错误var email = $('#email').val();
email = validateEmail(email);
if (email = "false"){
$('#errors .emailerror').remove();
$('#errors').append("<p class="emailerror">Please enter a valid email</p>");
}
答案 2 :(得分:3)
尝试在附加新信息之前清除该值,即新错误:
$('#errors').val('');
答案 3 :(得分:1)
使用html()
或text()
设置错误div
的内容:
$('#errors').html("<p>Please enter a valid email</p>");
要email
为true
时不显示任何内容,请在else
语句中添加if
:
if (email === "false"){
$("#errors").html("<p>Please enter a valid email</p>");
} else {
$("#errors").html("");
}
另请注意,我使用===
代替=
。这是因为使用单个等号(=
)只会将变量email
设置为false
,而不会实际检查是否相等。
答案 4 :(得分:0)
更合适的方法是从DOM树中删除所有附加代码:
试试这个:
var email = $('#email').val();
email = validateEmail(email);
if (email == "false"){
$('#email_error').parent().remove();
$('#errors').append("<p id='email_error'>Please enter a valid email</p>");
}
答案 5 :(得分:0)
您需要做的就是在条件之后添加一个$('.appended').remove()
,然后在您要附加的文本中使用一个p
标记并添加一个class="appended"
效果很好>