2012-01-05 128 views
4

我有一些jQuery检查用户是否输入了正确的电子邮件地址。如果用户无效,则可以返回并更改他/她的电子邮件。但是,我的代码将导致两次相同的错误消息,因为错误一直附加在我的errors div内。我怎样才能改变这只允许一次追加错误?如果email变量为true,我也想删除该错误。这个div中还有其他的验证错误。如何防止jquery追加多次

的jQuery:

var email = $('#email').val(); 
email = validateEmail(email); 
if (email = "false") { 
    $('#errors').append("<p>Please enter a valid email</p>"); 
} 

validateEmail将返回truefalse取决于电子邮件是否有效。

+1

为什么要重新发明轮子。 jQuery可以验证电子邮件为你http://docs.jquery.com/Plugins/Validation – 2012-01-05 04:26:33

回答

12
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>"); 
} 
+0

我应该提到,我在这个div也有其他错误,所以.html可能会抹去其他错误 – kirby 2012-01-05 04:26:22

+0

请参阅编辑,让我知道它是否有效 – redmoon7777 2012-01-05 04:30:21

+0

谢谢,但它没有奏效。我得到它使用ID而不是类的工作,只是使用'$('#email_error')。remove();' – kirby 2012-01-05 04:41:36

1

使用html()text()设置错误div的内容:

$('#errors').html("<p>Please enter a valid email</p>"); 

emailtrue不显示任何内容,添加一个elseif声明:

if (email === "false"){ 
    $("#errors").html("<p>Please enter a valid email</p>"); 
} else { 
    $("#errors").html(""); 
} 

另请注意,我用===而不是=。这是因为使用一个等号(=)只会将变量email设置为false而不是实际检查是否相等。

+0

我应该提到,我也有这个div的其他错误,所以.html可能会抹去其他错误 – kirby 2012-01-05 04:27:14

+0

为什么你有多个错误来验证一个输入? – Purag 2012-01-05 04:28:11

+0

我所有的错误都进入了这个div,以便用户可以在一个地方看到他们所有的表单错误。 (这是注册页面)这不是一个好主意吗? – kirby 2012-01-05 04:30:10

3

尝试追加新的信息之前清算的价值,即新的错误:

$('#errors').val(''); 
+0

我不能清除错误,因为其他表单元素可能存在其他错误 – kirby 2012-01-05 04:36:37

4

当u追加电子邮件错误,一类 “emailerror” specity它,

$('#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>"); 
} 
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>"); 
}