4

何度もゴーグルしましたが、問題の解決策が見つかりませんでした。ウィジェットの作成者が FAQ の最後の回答を参照していますが、FAQ に回答がないか、見つけられません。その頃から更新されていると思います。同じ問題に直面し、同じ質問をした他のフェローは、すぐに立ち去り、解決策を提供しませんでした。

とにかく、私の場合、ボタン付きのテーブルがあります 写真:

ここに画像の説明を入力

ユーザーが画像ボタンのいずれかをクリックすると、モーダル ダイアログが表示されます。ユーザーは、選択した行の画像を管理できるようになりました。彼は写真のアップロード、削除などを行うことができます。ユーザーが表の 2 行目のダイアログを開くと、2 行目の画像のみが表示されます。ユーザーが [写真] ボタンを押してダイアログを表示するたびに、アップロードされたファイルのリストを消去する必要があることがわかります。サーバーから、選択した行に対応する写真のリストを受け取ります。残念ながら、選択した行のリストを取得すると、受信したファイルが既存のリストに追加されます。

サーバー側のファイルを削除せずに、リストを消去する方法やウィジェットをリセットする方法を教えてください。

更新一時的な解決策として、次のコードを使用しました。

    jQuery.ajax({
        url: "<YOUR URL HERE>",
        dataType: 'json',
        context: $('#fileupload')[0]
    }).done(function (result) {
        jQuery("#fileupload").find(".files").empty(); //this line solves the issue

        jQuery(this).fileupload('option', 'done').call(this, null, { result: result });
    });

ありがとうございました。

4

3 に答える 3

4

私はまた、アップロード作業を取得するために1時間試行していました;)

これが、私がこの問題をどのように解決したかです:

$('#html5FileInput').fileupload({
    ....
    add: function (e, data) {
        $.each(data.files, function (index, file) {
            var newFileDiv = $(newfileDiv(file.name));
            $('#fsUploadProgressHtml5').append(newFileDiv);

            newFileDiv.find('a').bind('click', function (event) {
                event.preventDefault();
                var uploadFilesBox = $("#fsUploadProgressHtml5");
                var remDiv = $(document.getElementById("fileDiv_" + event.data.filename));
                removeFileFromArray(event.data.filename);
                remDiv.remove();
                data.files.length = 0;
                ...
            });

            data.context = newFileDiv;
        });
     ...
)};

ご覧のとおり、add-event 内に「newfileDiv(file.name)」を使用してファイル データセットを作成します。これにより、ファイルに関するすべての情報 (名前、サイズなど) を含む div と、リストからファイルを削除するために存在するアンカーが作成されます。このアンコールで、削除の実装があるクリックイベントをバインドします。

お役に立てれば!

于 2013-03-25T08:49:21.503 に答える
1

これが最もエレガントなソリューションではないことはわかっていますが、非常に迅速で汚いものが必要だったので、これが私がしたことです(jQueryを使用)。

//manually trigger the cancel button for all files...removes anything that isn't uploaded yet
$('.fileupload-buttonbar .cancel').first().trigger('click');

//check the checkbox that selects all files
if(!$('.fileupload-buttonbar .toggle').first().checked) {
    $('.fileupload-buttonbar .toggle').first().trigger('click');
}

//manually trigger the delete button for all files
$('.fileupload-buttonbar .delete').first().trigger('click');

私はこれが最善の方法ではないことを知っています。私はそれがエレガントではないことを知っています...しかし、それは私にとってはうまくいき、プラグインからすべてを削除します.

プラグインからローカル配列またはオブジェクトにファイル名またはその他のものを追加した場合は、それらを手動でクリーンアップする必要があります ( 、 、 、および 'fileuploaddestroyed` イベントで起動するハンドラーがいくつかfileuploadaddedありfileuploadsentますfileuploadcomplete) fileuploadfailed

于 2013-07-01T18:19:30.943 に答える