2011-10-30 30 views
0

在下面的腳本中,我檢查輸入的電子郵件是否有效。這不是最好的正則表達式,但現在可以。此外,目前我不做任何服務器端檢查輸入。只有這個腳本。表單在jQuery中輸入無效時錯誤地顯示成功提醒框

我有這個問題,但:
當電子郵件是有效的,經過我鍵入了無效的電子郵件,我得到第一您的郵件地址格式無效然後我們何時推出,將會通知您。謝謝!警報。還發送電子郵件。如何解決這個問題?

謝謝

這是我的形式

<form id="myform" action="" method="POST"> 
       <input id="subscribe" name="subscribe" class="subscribe floatLeft" type="text"> 
       <button id="signUp" class="signUp floatRight" ><intro>notify!</intro></button>    
       <div class="clear">&nbsp;</div> 
</form> 

,這裏是腳本

var signUp = function(inputEmail) { 
    var isValid = true; 
    var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    if (!emailReg.test(inputEmail)) { 
     isValid = false; 
     alert('Your email is not in valid format'); 
    } 



$("#myform").submit(function(event) { 
    event.preventDefault(); 
    if (!isValid) { 
     return false; 
    } else { 
     $.post('mailme.php', $("#myform").serialize(), function(data) { 
      alert('You will be notified when we launch. Thank you!'); 

     }); 
     return false; 
    } 
}); 

}; 
+1

這將有助於:http://stackoverflow.com/questions/7539752/how-to-refresh-only-a-part-of-the-page-when-f5-or-refresh-button-is -Pressed/7539830#7539830 –

+0

@BookOfZeus但如何? – asotshia

+1

@asotshia顯示你的HTML,你從哪裏調用'signUp'。 –

回答

2

您需要onsubmit事件返回false; 無論如何,您需要綁定提交事件並在那裏進行isValid檢查;

$("#myform").submit(function(event){ 
    event.preventDefault(); 
    if(!isValid){ 
    return false; 
}else{ 
    $.post(...) 
    return false; 
} 
}); 

- 編輯 - 忘記返回false/event.preventDefault;但就像我說的,提交事件需要進行反正

--Edit2--

function validEmail(email){ 
var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
return email.test(emailReg) 
} 
$(document).ready(function(){ 
    $("#myform").bind({ 
    submit: function(e){ 
    e.preventDefault(); 
    if(validEmail($("#myform").find("#subscribe").val()){ 
     $.post(...) 
      alert("You will be notified"); 
     return false; 
    } 
    else { 
     alert("Invalid email"); 
     return false; 
    } 

    }); 

})約束; }

+0

謝謝你的建議。我設法防止重新加載。不過,我更新了我的問題,如果你看看它,我會非常感激。 – asotshia

+0

你更新它的方式應該可以工作,但它有點麻煩...,你是否把onsubmit =「signUp(this.elements [0])」或作爲動作或類似的東西?如果你只綁定document.ready上的提交事件並在那裏做檢查就足夠了。我會在我的回答中提出代碼建議 – alinn

+0

我使用我的表單更新 – asotshia

0

您需要return falseevent.preventDefault()emailReg測試。

+0

我試過'返回false;'剛剛'你的電子郵件不是......'沒有結果 – asotshia

+0

你需要onsubmit事件返回false – alinn

+0

我已更新我的問題 – asotshia

相關問題