2013-02-11 124 views
1

您好我需要驗證一個file輸入類型:JQuery驗證文件輸入

<form onsubmit="return validate()"> 
<input type="file" name="File" class="multi" /> 
<input type="file" name="File" class="multi" /> 
<input type="file" name="File" class="multi" /> 
<input type="file" name="File" class="multi" /> 
<input type="submit" name="BtnSubmit" value="save" /> 
</form> 

我已創建Ĵ查詢方法是

function validate() 
{ 
    $(".multi").each(function(){ 
     var files = $(this).val(); 

     if(files=='') 
     { 
      alert("No document file selected"); 
      return false; 
     } 
    }); 
} 

問題是其示出了警報,但形式提交。

+0

我無法重現:[的jsfiddle(http://jsfiddle.net/oliholz/zpExL/3/) – oliholz 2013-02-11 14:49:50

回答

1
function validate(){ 
    $(".multi").each(function(){ 
    var files = $(this).val(); 
    if(files==''){ 
    alert("No document file selected"); 
    } 
    return false;  
}); 
} 

你的回報的說法應該是在不同的塊,如果塊,因此將作爲其他

1

請參見下面的代碼片段驗證,如果提交的文件是有效的文件類型不一樣。以及檢查文件是否被提交以開始。

//Javascript 

$("#btnUpload").click(function (e) { 

     var file = $("#fileupload").val(); //Fetch the filename of the submitted file 

     if (file == '') { //Check if a file was selected 
      //Place warning text below the upload control 
      $(".errorDiv").html("Please select a file first."); 
      e.preventDefault(); 
     } 
     else { 
      //Check file extension 
      var ext = file.split('.').pop().toLowerCase(); //Check file extension if valid or expected 
      if ($.inArray(ext, ['txt']) == -1) { 
       $(".errorDiv").html("Select valid text file (txt)."); 
       e.preventDefault(); //Prevent submission of form 
      } 
      else { 
     //Do your logic here, file upload, stream. etc.. if file was successfully validated 
     } 
    } 
}); 

//對於HTML

<input id="fileupload"  type="file" name="files[]" /><br /> 
        <p class="reminder"> Allowed file type: .txt</p> 
        <div class="errorDiv"></div> 
        <input type="button" id="btnUpload" value="Upload File"/><br /> 

請注意:在服務器端執行文件驗證以及防止後端錯誤或數據注射。

我希望這有助於!

+1

有人可以解釋的反對票? – KevinIsNowOnline 2013-02-11 14:43:37

0

問題是,每個循環都返回false。如果您在$.each()循環內返回false,則意味着退出$.each循環。所以這裏出現警報,然後它就退出每個警報。

您可以通過多種方式實現該任務。但最簡單的方法是帶一個標誌變量。

​​