2011-12-03 11 views
4

ユーザーがアップロードするファイルを選択した後で、フォームの送信をトリガーするように現在のフォームを変更しました。アップロードが完了したら、私はIEがファイル入力フィールドをリセットしないのはなぜですか?

$('#file').val(''); 

を入力してファイル入力フィールドをリセットします。

HTML 
<input name="file" type="file" id="file"/> 

これはChrome、FF、Safariで動作しますが、IEでは動作しません。 IEのための回避策またはよりよい解決策がありますか?

+0

[jQueryを使用してを消去する](http://stackoverflow.com/questions/1043957/clearing-input-type-file-using-jquery) – jabclab

+0

@ジャブラブはワットですか?それは疑問です。 dsntには受け入れられた答えがあります...そしてこのクエストは私に解決策を与えました。 –

答えて

6

ファイル入力タイプの値を変更することはできません。これはセキュリティ上の脆弱性を招くためです。代わりに、ファイル入力を新しいものに置き換えてください。代わりに$('#file').val('')の、次の操作を行います。さらに良い

$('#file').replaceWith('<input name="file" type="file" id="file"/>'); 

は、元のバージョンのコピーのクローンを作成し、メモリ内に格納することです。それを置き換える必要があるときは、複製されたコピーを使用して、それを再びクローンします。したがって、このような何か:私はjQuery.on()と委任バージョンを使用してい

$(document).ready(function() { 
    var empty_input = $('#file').clone(); 

    $('#the-form').on('change', '#file', function(el) { 
     $('#the-form').submit(); // assuming the target is a hidden iframe 
     $(this).replaceWith(empty_input.clone()); 
    }); 
}) 

注ので、イベントはまだそれが交換の右後に新しい入力で動作します。

+0

それは素晴らしい仕事をしました...私は決してセキュリティリスクを考慮した!ありがとう! – Paul

+0

これは私が探していたものです.. thnks man –

関連する問題