0

だから私は次のものを持っています

<form id="uploadControls">
    <input type="file" id="browseFiles">
    <input type="button" id="startUpload" value="Upload">
    <input type="checkbox" id="overwrite">
</form>

そして、それらはファイルのアップロードメカニズムを制御するために一部の JavaScript によって使用されます。バックエンドは完全に正常に動作します。私は resumable.js ( https://github.com/23/resumable.js ) を使用しています。アップロード コントロールの小さなサンプル スニペットを次に示します。

var resume;
function resumableUpload(){
    resume = new Resumable({
        url: uploadURL,
        query: {overwrite: !!($("#overwrite").attr('checked'))},
        size: 1024*1024
    });
    // some events with callback functions
    resume.assignBrowse(document.getElementById("browseFiles"));
}
$("#startUpload").live("click",function(){
    resume.upload();
});

誰かがチェックボックスをオンにして、ファイルが以前の既存のファイルを上書きできるようにする (タイムスタンプなしで保存する) 場合query、再開可能なオブジェクトのパラメーターを更新する必要がありますresumableUpload()。問題は、呼び出しが次のようなものによって行われた場合です。

$("#overwrite").on('click',resumableUpload);

その後、すべてのonclickハンドラーが応答を停止します。

私は次のことを試しました:

$("#overwrite").on('click',function(){
    $("#uploadControls").each(function(){
        this.reset();
    });
    startResumable();
});

しかし、それはうまくいかなかったようです。

私は正しくやっていないのですか?これは、resumable.js ライブラリを使用してファイルピッカーをバインドするとうまくいきました<button>が、Firefox ではうまくいきませんでした。そのため、より良い解決策が必要です。

4

1 に答える 1

0

委任を使用してみてください:

$("#uploadControls").on('click','#overwrite',function(){...});

ところで:

$("#startUpload").live("click",function(){...});

次のようにする必要があります。

$(document).live("click","#startUpload",function(){...});

LIVEは非推奨です。

jQuery 1.7 以降、.live() メソッドは非推奨になりました。.on() を使用して、イベント ハンドラーをアタッチします。古いバージョンの jQuery のユーザーは、.live() よりも .delegate() を使用する必要があります。

于 2013-04-12T15:07:17.787 に答える