2012-01-05 150 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>"); 
}