当jQuery中输入无效时,表单会错误地显示成功警告框

时间:2011-10-30 14:54:05

标签: javascript 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-\.]+@([\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;
    }
});

};

2 个答案:

答案 0 :(得分:2)

您需要onsubmit事件才能返回false; 你需要绑定提交事件并在那里检查isValid;

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

- Edit-- 忘了返回false / event.preventDefault;但就像我说的那样,提交事件无论如何都需要被绑定

- EDIT2 -

function validEmail(email){
var emailReg = /^([\w-\.]+@([\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;
     }

   });

}); }

答案 1 :(得分:0)

您需要在return false测试中event.preventDefault()emailReg