2012-08-08 13 views
5

可能複製することはできません:
Clearing <input type='file' /> using jQueryはjavascriptのjqueryの中に明確な入力タイプ=ファイル

これは私のコードです:

<input ID="fileUpload1" runat="server" type="file" style="width:275px; position:absolute; left:1px"/> 

私はいくつかの解決策を試してみました:

$("input[type='file']").val(''); 
$('#DivfileUpload').replaceWith("<input class=VWButton ID=fileUpload1 runat=server type=file style=width:275px; position:absolute; left:1px/>"); 

と他の多くのWebからしかし成功しません。

+0

可能な複製:http://stackoverflow.com/q/1043957/663604 –

+0

私はその答えを使っていますが、実際には成功しません。 – anmarti

答えて

9

(明らかな)セキュリティ上の理由からファイル入力の値を設定することはできません。

あなたがそれをクリアしたい場合、あなたはそれがであるフォームをリセットする必要があります。新しいものと交換


も動作しますが、有効なコードでそれを行う必要があります。 (これは、ASP runat=server属性/値などのサーバー側コードを含めるようにはしておらず、単純な単語ではない属性値(たとえば、スタイル属性)を引用しないでください)。

+0

だから私は入力のタイプ=ファイルをdivでラップし、2番目のオプションを使用する必要がありますか? – anmarti

+0

セキュリティ上の理由を一覧表示/説明できますか? – Satish

+0

@Satish - 人々は自分のコンピュータ上のファイルに個人情報を保存します。あなたが訪問したウェブサイトがそれらのファイルを読むことができる場合、それはあまりプライベートではありません。 – Quentin

-1
$(function() { 
    $('#fileUpload1').val(''); 
}); 
+0

申し訳ありませんが、それはありません。 – anmarti

+0

$(ID)。val( ''); これは、任意の要素の有効なイベント内で適用されると機能します – TheDean

7

セキュリティ上の理由から、一部のブラウザ(IEなど)では.val( '')で値を設定しようとすると失敗します。

あなたの最良のオプションは、フォームをリセットすることです:

$('form').trigger('reset'); 

あるいは若干の修正(必ずHTMLが有効にする)と、交換用コードを使用する:

$('#fileUpload1').replaceWith('<input id="fileUpload1" type="file" style="width:275px; position:absolute; left:1px"/>'); 

あなたの場合CSSでボックスのスタイルを設定すると、コードがさらに簡単になります。

CSS:

#fileUpload1 { 
    width: 275px; 
    position: absolute; 
    left: 1px; 
} 

はJavaScript:

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

より高度なオプションは、ページがロードされるときに、それのクローンを作成した後、ファイルのアップロードボックスを非表示にすることですユーザーに表示されます。これをクリアする必要がある場合は、クローンを削除して元の隠しクローンを再クローンします。この方法では、ユーザーが複数のファイルをアップロードできるようにする場合は、入力ボックスの複数のコピーを作成することもできます。私は実装の詳細をあなたに任せます。 ;)

関連する問題