1

こんにちは、file入力タイプを検証する必要があります:

<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>

私が作成したjクエリメソッドは

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

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

問題はアラートが表示されていることですが、フォームは送信されています。

4

3 に答える 3

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

return ステートメントは if ブロックと同じではなく別のブロックにある必要があるため、else として機能します

于 2013-02-11T14:33:04.323 に答える
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 />

注意: バックエンド エラーやデータ インジェクションを防ぐために、サーバー側でもファイル検証を実行してください。

これが役立つことを願っています!

于 2013-02-11T14:41:32.820 に答える
0

問題は、ループごとに false を返すことです。ループ内で false を返すと、ループ$.each()を終了することを意味し$.eachます。したがって、ここでアラートが表示され、単に各を終了します。

そのタスクはさまざまな方法で達成できます。しかし、最も簡単な方法は、フラグ変数を使用することです。

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

        if(files=='') { 
           alert("No document file selected");
           $check = false;
           return false; // You don't want to loop, so exit each loop
        }
    });

    return $check;
}
于 2014-01-24T04:18:26.307 に答える