0

ファイルをアップロードして進行状況バーを取得するためにこれを持っています。アップロードされたファイルを pdf のみに制限したいのですが、残念ながら、これを使用した JQuery 検証プラグインでは機能しません。

$(document).ready(function(){

var bar = $('.bar');
var percent = $('.percent');
var status = $('#status');

$('#up-form').validate({
 rules: {
     uploadedfile: {
         required: true,
         accept: "application/pdf",
         },
     },
 messages: {
    uploadedfile: "File must be PDF",
    },
 highlight: function(element) {
     $(element).closest('.control-group').removeClass('success').addClass('error');
 },
 success: function(element) {
 element
     .addClass('valid')
     .closest('.control-group').removeClass('error').addClass('success');
 }
});


$('form').ajaxForm({
    beforeSend: function() {


        status.empty();
        var percentVal = '0%';
        bar.width(percentVal)
        percent.html(percentVal);
    },
    uploadProgress: function(event, position, total, percentComplete) {
        var percentVal = percentComplete + '%';
        bar.width(percentVal)
        percent.html(percentVal);
    },
    complete: function(xhr) {
     bar.width("100%");
    percent.html("100%");
        status.html(xhr.responseText);
    }
}); 
})(); 

どうすれば修正できますか?アップロードしようとするファイルごとに、「ファイルはPDFでなければなりません」というエラーメッセージが常に表示されます。

サーバー側でも拡張子を確認しているのですが、帯域節約のためクライアント側にもしたいです

ご協力ありがとうございました

4

2 に答える 2

1

ルールで試す

extension: "pdf"

電話することを忘れないでください

<script src="jquery-validation/dist/additional-methods.min.js"></script>
于 2015-10-23T07:05:00.533 に答える
0

このプラグインの有効なコールバック関数/オプションではないと綴りbeforeSubmitを間違えました。beforeSend

次に、この他の回答を参照してください: https://stackoverflow.com/a/15324504/594235

基本的に、プラグインのbeforeSubmitコールバック関数を使用して、最初にajaxFormValidate プラグインの.valid()メソッドを使用してフォームの有効性をプログラムでチェックします。

私の答えは、それ以外の場合は初期化コードが正しいことを前提としています.validate().ajaxForm()

.valid()以下のbeforeSubmitコールバックに追加ajaxForm()...

$(document).ready(function () {

    var bar = $('.bar');
    var percent = $('.percent');
    var status = $('#status');

    $('#up-form').validate({
        rules: {
            uploadedfile: {
                required: true,
                accept: "application/pdf",
            },
        },
        messages: {
            uploadedfile: "File must be PDF",
        },
        highlight: function (element) {
            $(element).closest('.control-group').removeClass('success').addClass('error');
        },
        success: function (element) {
            element.addClass('valid')
                .closest('.control-group').removeClass('error').addClass('success');
        }
    });


    $('#up-form').ajaxForm({
        beforeSubmit: function () {
            status.empty();
            var percentVal = '0%';
            bar.width(percentVal)
            percent.html(percentVal);
            return $('#up-form').valid(); // TRUE when form is valid, FALSE will cancel submit
        },
        uploadProgress: function (event, position, total, percentComplete) {
            var percentVal = percentComplete + '%';
            bar.width(percentVal)
            percent.html(percentVal);
        },
        complete: function (xhr) {
            bar.width("100%");
            percent.html("100%");
            status.html(xhr.responseText);
        }
    });

});
于 2013-03-10T17:12:57.107 に答える