1

現在jQueryを使用して、ユーザーフォーム入力に基づいていくつかの動的計算を行う単純なフォームがあります。

ほとんどのフォーム フィールドは無効になっており、その値は無効になっていないフィールドの値を使用して計算されます。計算の一部には、フィールド値をデータベースに保存するための AJAX 呼び出しが含まれます。

次のコードを使用できます。

$('#specific-field').change(function() {
    calculateThings();
});

ただし、これには、値を変更できるフィールドごとに繰り返す必要があります。

私もこれを行うことができます:

$('form').change(function() {
    calculateThings();
});

しかし、一度に 1 つのフィールドだけが異なる値を含む可能性がある場合、変更が行われるたびにすべてのデータベース フィールドを保存して更新する必要があります。

フォーム レベルで変更を監視し、フォーム内のどの特定のフィールドが変更されたかを検出できる 2 つの可能性をマージする方法はありますか?

4

7 に答える 7

2

次のようなことはできませんでした:

$('.genericFieldClass').change(function() {
    calculateThings();
});
于 2013-08-06T11:05:07.027 に答える
0

input次を使用して、フォーム内のすべてのフィールドを取得できます。

$('form input').change(function() {
    calculateThings();
});

そして、そこselectに追加するだけform selectの場合:

$('form input, form select').change(function() {
    calculateThings();
});
于 2013-08-06T11:05:21.617 に答える
0

変更イベントが伝播しないため、実行できません。

changeinput変更可能なすべての入力要素にクラスのようなものを追加できます

$('.changeinput').change(function() {
    calculateThings();
});
于 2013-08-06T11:05:27.420 に答える
0

これは役に立ちますか?

$('input,select,textarea').change(function(){
   var elementChanged = $(this).attr("id");
   //ajax call you wanna do and whatever else
});
于 2013-08-06T11:08:17.450 に答える
0

フォーム要素にクラスを追加するか、注意したい入力のタイプがわかっている場合は子セレクターを使用します。クラスを使用する場合:

<input type="" class="myClass" />
<input type="" class="myClass" />
<input type="" class="myClass" />
<input type="" class="myClass" />

jquery で:

$('.myClass').change(function() {
   calculateThings();
});

またはクラスを使用せずに:

$('form').children("input[type='text']").each(function(){             // Or whatever input type you want to look out for
    $(this).change(function(){
       calculatethings();
    });
});
于 2013-08-06T11:08:35.177 に答える
0

クラスは、複数の要素に同じ機能を適用できるように設計されています。それを念頭に置いて、これを試してください:

$('.dynamic-field').change(function() {
    calculateThings();
});

次に、計算をトリガーする要素にクラス「dynamic-field」を指定すると、完了です。

于 2013-08-06T11:05:59.940 に答える