4

次のコードからインデックス値を取得するにはどうすればよいですか?

add: function (e, data) {
    $.each(data.files, function (index, file) {
        alert('Added file: ' + index + " -- " + file.name);
});

(3) 個のファイルがあるにもかかわらず、INDEX は常に (0) を返します。FILE.NAME が機能し、(3) 個のファイルをすべて表示できます。

これは出力でした:

  • 追加されたファイル: 0 -- dog.jpg
  • 追加されたファイル: 0 -- cat.jpg
  • 追加されたファイル: 0 -- Honeybadger.jpg

これは私が期待していた/望んでいた結果です:

  • 追加されたファイル: 0 -- dog.jpg
  • 追加ファイル: 1 -- cat.jpg
  • 追加ファイル: 2 -- Honeybadger.jpg

いくつかのデバッグの後、フォームが (3) 回送信されたように見えるため、ファイルごとに (0) を取得します。また、GIT WIKI からコードをコピーしましたが、うまくいきません。

BlueImp の専門家が助けてくれることを願っています。

更新コード: 以下のコードは、各インデックスを返すようになりました

$('#fileUpload1').fileupload(
{
    replaceFileInput: false,
    dateType: 'json',
    url: 'Handlers/AjaxFileHandler.ashx',
    singleFileUploads: false,
    autoUpload: false,
    add: function (e, data) {
        $('#upLoadButton').click(function () {
            $.each(data.files, function (index, file) {
                alert('Added file: ' + index + " -- " + file.name);

                var v = $('input[data-id=' + index + ']').val();
                var d = $('select[data-id=' + index + ']').val();
                alert('textField:' + v + '  selected: ' + d);               
            });

            data.submit();

        });
    },
});

});
4

1 に答える 1

3

Addメソッド関数コールバックを正しく使用していません。実際、このイベントはデフォルトで単一のファイルごとに発生します。ファイルの配列ではなく、ファイルを表すデータ。singleFileUploads以下の例のように、必要なものを取得するには false に設定する必要があります。

$('#fileupload').fileupload({
        previewSourceMaxFileSize: 0,
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png|bmp|svg|wmv|avi|mpe?g|mp4|ppt|pps)$/i,
        global:false,
        singleFileUploads:false, //set this to false to handle multi files upload behaviour
        add:function (e, data) {
            $.each(data.files, function (index, file) {
                alert('Added file: ' + index + " -- " + file.name);
            });
        },
        autoUpload: false
    });
于 2012-11-03T19:39:31.277 に答える