2012-09-23 71 views
2
我在下面那裏,如果我在它把一個無效的電子郵件地址會正確顯示signUpWarning提醒第一次,但代碼中的問題

,如果我關閉該對話框,並嘗試在同一無效的電子郵件它將不會彈出。有任何想法嗎?JS驗證只運行一次

$(document).ready(function() { 

    //if submit button is clicked 
    $('#submit_btn').click(function(e) { 
     e.preventDefault(); 
     var email = $('#email').val(); 
     if (!is_valid_email(email)){ 
      $("#signUpWarning").show(); 
     }else{ 

      $.ajax({ 
       url: "process.php", 
       type: "post", 
       data: "email=" + email, 
       success: function() { 
        $("#signUpWarning").hide(); 
        $("#signUpAlert").show(); 
       } 
      }); 
     } 
    }); 
}); 

function is_valid_email (email) 
{ 
    return /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email); 
} 

的警告框的代碼是:

<div class="alert alert-block alert-error hide" id="signUpWarning"><!--Use: $("#signUpWarning").show(); to show this alert--> 
    <a class="close" data-dismiss="alert">×</a> 
    <h5 class="alert-heading">Sorry!</h5>&nbsp;Your e-mail address was not valid, please try again. 
    </div> 
+0

你可以給popu框的代碼?那裏可能有問題..? (這段代碼對我來說看起來很好) – Mat

+0

感謝Mat,把它添加到了帖子中。奇怪的是,它會首次顯示警報,而不是隨後的無效輸入。另外,在一次無效輸入後,它會正確隱藏警告並顯示成功警報。 – dyonak

+2

只是一個猜測,但也許你如何關閉警報彈出窗口導致它從DOM中刪除而不是隱藏它。考慮到你說它在不適當的電子郵件後顯示正確的電子郵件成功。此外,您可以在顯示錯誤之前通過灑一個console.log(「一些有用的信息」)來測試問題是否出現在此代碼中。我個人建議使用console.log($(「#signUpWarning」))來查看元素是否存在,就像你期望的那樣。 – MushinNoShin

回答

1

檢查你不關閉警報時,從DOM刪除元素。

console.log($("#signUpWarning"));$("#signUpWarning").show();前,應幫助確定,如果這是發生了什麼。

+0

是的,就是這樣。我正在使用jquery/bootstrap,並且右上方關閉的警報框X與.remove綁定,而不是.hide。謝謝@MushinNoShin! – dyonak