1. ホーム
  2. jquery

input type="file "でのjQuery変更メソッド

2023-09-08 05:50:54

質問

私はjQueryのシンプルでエレガントなAPIを100%採用しようとしていますが、APIとストレートアップのHTMLの間で、どうしても理解できない矛盾に遭遇しています。

私は、ファイル入力値が変更されるたびに実行したいAJAXファイルアップローダースクリプト(正しく機能します)を持っています。 以下は、私の作業コードです。

<input type="file" size="45" name="imageFile" id="imageFile" onchange="uploadFile()">

を変換すると onchange イベントをjQueryの実装に変更します。

$('#imageFile').change(function(){ uploadFile(); });

のようにしても、結果は同じではありません。 このように onchange 属性では uploadFile() 関数は、予想通り値が変更されるたびに呼び出されます。 しかし、jQuery APIでは .change() イベントハンドラでは、イベントは値が最初に変更されたときだけ発生します。 それ以降の値の変更は無視されます。 これは私には間違っているように思えますが、きっとこれはjQueryの見落としではないのでしょう?

他に同じ問題に遭遇した人はいますか?また、私が上記で説明したこと以外に問題の回避策や解決策をお持ちですか?

どのように解決するのですか?

は、ajaxアップローダーがあなたの入力要素を更新していますか? もしそうなら、.live()メソッドの使用を検討する必要があります。

 $('#imageFile').live('change', function(){ uploadFile(); });

を更新してください。

jQuery 1.7+ からは、.on() を使用する必要があります。

 $(parent_element_selector_here or document ).on('change','#imageFile' , function(){ uploadFile(); });