[英]Comma separated email validation
我正在使用以下鏈接來驗證電子郵件: http : //jquerybyexample.blogspot.com/2011/04/validate-email-address-using-jquery.html
我正在使用此功能使用js驗證我的電子郵件地址:
validateEmail = (sEmail) ->
filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/
if filter.test(sEmail)
true
else
false
$(document).ready (e) ->
$("#invitation_form").submit ->
sEmail = $("#invitation_email").val().split(',')
email=0
for email in [0..sEmail.length]
if $.trim(email).length is 0
$("h2").append("<div class='alert alert-error'>Please review the problems below</div>")
$("#invitation_email").attr("placeholder", "Email can't be blank")
return false
if validateEmail(email)
else
alert sEmail
email++
# $("h2").append("<div class='alert alert-error'>Please review the problems below</div>");
# $("#invitation_email").val('')
# $("#invitation_email").attr("placeholder", "Please enter valid email")
# return false
如果我只發送一封電子郵件,這將正確驗證我的電子郵件。 但是在我的電子郵件文本字段中,我必須放置許多用逗號分隔的電子郵件,然后分別驗證每個電子郵件。 為此,我放置了split(','),並添加了for循環,但驗證未正確完成。 如果我輸入“ example1 @ email.com,example2 @ email.com”,則它將放在else塊中,用於處理無效電子郵件。 在警報中,我收到的是單個電子郵件,但沒有獲得如何分別驗證每個電子郵件的方法。 有人可以幫我嗎? 提前致謝。
嘗試改用while語句。 像這樣:
sEmailArray = $("#invitation_email").val().split(',')
i = 0
email = undefined
while email = sEmailArray[i]
if validateEmail(email)
else
alert email
i++
當你這樣說:
for email in [0..sEmail.length]
你是說:
for email in an_array_of_numbers
因此該循環中的email
值將是整數,而整數不是電子郵件地址。 你說:
如果我只發送一封電子郵件,這將正確驗證我的電子郵件。
但這不是真的,它失敗,只有一個電子郵件地址或您在此演示中看到的多個電子郵件地址:
如果要查看sEmail
中的電子郵件地址,則需要:
for i in [0...sEmail.length]
email = sEmail[i]
#...
或更好:
for email in sEmail
#...
請注意,第一個版本使用...
而不是您的..
, ..
包括上限,因此,如果sEmail.length
是一個上限,您將遍歷[0, 1]
而不是與數組的匹配的[0]
索引。 我會選擇for email in sEmail
版本中的for email in sEmail
而不用擔心索引。
另外, String#split
可以使用正則表達式作為分割模式,因此您可以在分割時刪除開頭和結尾的空格:
sEmail = $("#invitation_email").val().split(/\s*,\s*/)
這樣,您不必在循環中添加$.trim
,並且在調用validateEmail
時也不會忘記修剪。
當我在這里時, Regexp#test
返回true
或false
因此您無需說:
if filter.test(sEmail)
true
else
false
您可以簡單地說:
filter.test(sEmail)
因此,只需進行一些小改動,您就應該擁有更清潔,更好用的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.