複数の入力、選択、およびテキストエリアを持つフォームがあります。div内の複数のajax読み込まれた要素への変更と他のアクションへのバインド
ロード時に、jQueryはすべての要素を見つけ出し、そのdata-attrをデフォルト値に設定し、変更イベントをバインドして変更をトリガーします。
問題は、一部の選択項目に他の入力値に基づいてajaxを再ロードすることです。
このコードを変更してajax読み込み要素を処理する簡単な方法はありますか? 最初のdata-attr値を設定する必要がありますが、要素ごと(domに表示された後)に1回だけ変更をトリガーします。
これは元のコードです:私が知っている
$main_form.find('input, select, textarea').each(function(){
$(this).attr('data-empty', 'true').off('change').on('change', function(){
if ($(this).hasClass('number')) validate_int($(this));
update_progress($(this));
}).trigger('change');
});
があり、何かのように:
$main_form.on('change', 'input, select, textarea', function(){
});
しかし、それはすべての変更上のデータ-ATTRを結合すると、それはまた、無限の変化を誘発するだろう。また、.off('change')
は本当に必要ではありませんが、私はちょうどそれを使用するために使用されています。
このコードをコピーしてajax done関数に追加することは望ましくありません。コードの重複を防ぎたいと思っています。それとも唯一の選択肢ですか?
。
ご不明な点がございましたら、ご意見をお寄せください。可能な限り正確な回答に更新します。
ありがとうございました。
でしょうが、一度pageloadでそれを呼び出し、そのルーチンの関数を作って、成功するたびに応答仕事の後にそれを呼び出しますか? – Scott
私はそれをいくつかの項目を含む関数として持っています。問題は、 'data-empty'属性をリセットし、単一の要素がajaxでロードされた後にすべての要素の変更をトリガーするので、 。また、私はajax 'done'関数でコードの重複を呼び出さないようにして、コードの重複を防止しようとしています。 – MiChAeLoKGB