2011-10-30 16 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> 

であり、ここであなたがemailRegテストでreturn falseまたはevent.preventDefault()に必要なスクリプト

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 - プレス/ 7539830#7539830 –

+0

@BookOfZeusしかし、どのように? – asotshia

+1

@asotshia 'signUp'を呼び出す場所からHTMLを表示します。 –

答えて

2

falseを返すにはonsubmitイベントが必要です。 とにかくsubmitイベントをバインドして、そこでisValidチェックを行う必要があります。

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

--Edit-- 偽/ 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

あります

ありがとうございます。

+0

私はあなたの電子メールではない...の直後に 'return false;'を試みました – asotshia

+0

偽を返すにはonsubmitイベントが必要です – alinn

+0

私の質問が更新されました – asotshia

関連する問題