2014-01-17 16 views
0

我不知道爲什麼它總是告訴我這是一個無效的電子郵件地址,即使它是正確的。任何想法? Demo on JSfiddle驗證告訴我所有的電子郵件地址都是無效的

我的形式

<form id="FormViewForm" method="post" action="/NewsletterMailer/subscribe/4" accept-charset="utf-8"> 
       <input type="hidden" name="_method" value="POST" /> 
       <input type="hidden" name="data[Form][id]" value="4" id="FormId" /> 
       <input type="hidden" name="data[Form][type]" value="1" id="FormType" /> 
       <input type="email" name="data[Form][e-mail]" value="" id="subscribe-email" placeholder="Enter your email..." required> 
        <input type="submit" value="+" class="large" id="subscribe-submit"> 
         </form> 

我custom.js

$('#FormViewForm').submit(function() { 
    validateEmail($('input').val()); 
    return false; 
}); 

function validateEmail(email) { 
    var re = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/; 
    if (re.test(email)) { 
     if (email.indexOf('@c-e.com', email.length - '@c-e.com'.length) !== -1) { 
      alert('Submission was successful.'); 
     } else { 
      alert('Email must be a CE e-mail address ([email protected]).'); 
     } 
    } else { 
     alert('Not a valid e-mail address.'); 
    } 
} 
+1

我對這個問題的辦法很簡單,不驗證的電子郵件,只檢查它有一個'@'和發送確認郵件; **真實**驗證。 – elclanrs

+1

如果我不得不採取瘋狂的猜測,它會是這樣一行:'if(email.indexOf('@ ce.com',email.length - '@ ce.com'.length)!== -1)' 。這沒有意義 –

+0

@elclanrs可能有點快速val,像空格?在右半邊至少有一個點。 '^ [^] @ [^] \。[^] $' – brandonscript

回答

4

只是一個jQuery選擇問題,你錯過了一個#

validateEmail($('#subscribe-email').val()); 

你的函數收到undefined作爲電子郵件,正則表達式失敗。

你也可以使用純JavaScript。 (請注意,document.getElementById不需要#,這可能會造成混亂。)

validateEmail(document.getElementById('subscribe-email').value); 
1

如果你想請使用正確的選擇像 用戶id作爲選擇

validateEmail($('#subscribe-email').val()); 

或者你也可以使用輸入標籤作爲選擇

validateEmail($('input[type=email]').val()); 

ID選擇會強於所有瀏覽器,也可以放心使用

請試試這個代碼

$('#FormViewForm').submit(function() { 
    validateEmail($('#subscribe-email').val()); 
    return false; 
}); 

function validateEmail(email) { 
    var re = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/; 
    if (re.test(email)) { 
     if (email.indexOf('@c-e.com', email.length - '@c-e.com'.length) !== -1) { 
      alert('Submission was successful.'); 
     } else { 
      alert('Email must be a CE e-mail address ([email protected]).'); 
     } 
    } else { 
     alert('Not a valid e-mail address.'); 
    } 
}