2

このアドバイスに従って、IE で FILE 入力をクリアします (具体的には、ここでも説明されている clone メソッドを使用しますが、リテラル HTML に置き換えてみました)。私の目標は、カスタム スタイルのアップロード コントロールに「ファイルの削除」ボタンを配置して、入力をクリアし、別のファイルを受信できるように「リセット」することでした。

問題は (IE のみ、IE9 までテスト済み)、このメソッドを使用して FILE 入力をクリアできますが、置換された FILE 入力で変更イベントを使用できません。クローンが元の ID と同じ ID を持ち、両方が DOM に存在するためだと思われますが、これは理論に過ぎません...これは回避できますか?

うまくいけば、問題を説明/明確化するには: このFIDDLE :

すべての非 IE ブラウザでは、

  1. 「ファイルを追加」をクリックしてファイルを選択
  2. 値がファイル フィールドに入力されます (通常は表示されません)。
  3. 「選択なし」が「ファイル選択済み」に変更されました
  4. 同じ行の [ファイルの削除] をクリックします。すべてがリセットされ、再び使用できるようになります。
  5. 「ファイルを追加」をクリックすると、プロセスが通常どおり繰り返されます

IEでは、

  1. 1-4 同じ上
  2. 「ファイルの追加」をもう一度クリックすると、新しいファイルを選択できますが、その後のアクション (3-4) は再び発生しません。

「すべての」ブラウザで機能するこれに対する解決策はありますか?

4

1 に答える 1

0

今のところこれを使用して改善することができます。これは単なる概念実証です。

http://jsfiddle.net/9LWPA/4/

基本的にセクション全体を削除してから再度追加しますが、クリック ハンドラーはハンドラーの定義後に追加されるため機能しません。そのため、クリック ハンドラー セクション全体をコピーしてクリーン ファイル関数に配置するだけでした。これを少し改善できると確信しています。

実際にこれを使用http://jsfiddle.net/9LWPA/5/少しきれいにしました。確かに効率的ではないように見えますが、IE 9 Mac VMでテストされ、少なくとも動作します

更新 - 新しいクリック ハンドラーを IE のみに移動しましたhttp://jsfiddle.net/9LWPA/6/

于 2012-07-05T13:29:40.777 に答える