如何防止Jquery多次追加

时间:2012-01-05 04:23:00

标签: jquery append email-validation

我有一些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将返回truefalse,具体取决于电子邮件是否有效。

6 个答案:

答案 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>");

emailtrue时不显示任何内容,请在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"效果很好