簡體   English   中英

jQuery驗證多個文件

[英]JQuery Validate Multiple files

嗨,我有多個文件要上傳,我需要在提交表單之前驗證所有這些文件

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

});
}

問題是它顯示警報,但仍在提交表單。 如何防止這種情況?

從表單的onsubmit處理程序返回false將停止提交過程,但是在您的代碼中,您將從$.each而不是validate函數提供的匿名函數中返回false

試試這個小提琴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();
            }
    });
});

validate函數不會返回false,但是.each()函數會返回。 因此,添加驗證以檢查是否所有驗證都通過了.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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM