2013-02-11 122 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循环。所以这里出现警报,然后它就退出每个警报。

您可以通过多种方式实现该任务。但最简单的方法是带一个标志变量。

​​