簡體   English   中英

逗號分隔的電子郵件驗證

[英]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值將是整數,而整數不是電子郵件地址。 你說:

如果我只發送一封電子郵件,這將正確驗證我的電子郵件。

但這不是真的,它失敗,只有一個電子郵件地址或您在此演示中看到的多個電子郵件地址:

http://jsfiddle.net/ambiguous/7LFus/

如果要查看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返回truefalse因此您無需說:

if filter.test(sEmail)
  true
else
  false

您可以簡單地說:

filter.test(sEmail)

因此,只需進行一些小改動,您就應該擁有更清潔,更好用的東西。

演示: http//jsfiddle.net/ambiguous/SzzXV/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM