2013-01-24 118 views
2

我在電子郵件(必填和正確格式)上進行驗證,然後在按鈕提交上進行文件上傳(空白或正確的格式)。
這裏的電子郵件驗證得很好,但是在文件上傳中,如果它是空白的,它也會顯示一個不需要的錯誤。驗證按鈕

代碼:

<script type="text/javascript"> 

    $(document).ready(function() { 

    $("#button").click(function() { 

     var email = $("#person_email").val(); 
     var img = $("#person_avatar").val(); 

     if (email == null || email == "" || !email.match(/^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$/)) 

     { 
      $("#valid").show(); 
      return false; 

     } else if (!img == "" || !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/)) 

     { 
      $("#valid_1").show(); 
      return false; 
     } else { 
      return true; 
     } 
    }); 
}); 
</script> 

回答

3

嘗試改變和

(!img == "" || !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/)) 

(!img == "" && !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/)) 
2

改用或。在這一個可能也應該查一下null還有:

... 
} else if (img != null && img != "" && !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/)) { 
    $("#valid_1").show(); 
    return false; 
} 

的問題是,你說「時,它不是空這是一個不正確的文件格式,顯示錯誤消息」。由於img == ""將失敗的第一個條件,它下降到第二。由於""不是您批准的文件類型之一,它通過測試,並進入錯誤代碼。

相反,你需要說「時,它不是空這是一個不正確的文件格式,顯示消息」。這樣,當它是空的時候,第一次測試失敗了,所以整個條件都失敗了。

因爲它會輸入if塊,無論你輸入什麼字段 - 如果它是空的,那麼它是一個錯誤的文件類型,但如果它不是空的,那麼它不是空的,因此它通過了第一個測試。

1
(!img == "" || !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/)) 
(!img == "" && !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/)) 

編輯此。