0

こんにちは、アップロードするファイルが複数あります。フォームを送信する前に、これらすべてを検証する必要があります

<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

0

検証関数は false を返しませんが、.each() 関数は false を返します。したがって、検証を追加して、すべての検証が .each() 関数で渡されたかどうかを確認し、そうでない場合は false を返します

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

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

        index += 1;
    });

    if (index != count) { //If the validation in .each() looping has returned false
        return false;
    }
}
于 2013-02-12T07:35:55.170 に答える
0

falseフォームの onsubmit ハンドラーから戻ると、送信プロセスが停止しますが、コードでは、関数ではなく、指定falseしている無名関数から戻ります。$.eachvalidate

于 2013-02-12T07:25:51.347 に答える
0

このフィドルを試してみてくださいhttp://jsfiddle.net/6cU74/3/

HTML:-

<form id="form1" method="post">
    <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" id="BtnSubmit" value="save" />
</form>

JS(jQuery使用):-

$(function () {
    $("#BtnSubmit").click(function (event) {
        event.preventDefault();
        var flag = true;
        $(".multi").each(function () {
            var files = $(this).val();

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

        });
        if (true==flag){
            $("#form1").submit();
            }
    });
});
于 2013-02-12T07:30:29.077 に答える