1

私は次のことにかなりこだわっています:

各行からデータ値を選択し、それらを .post リクエストに送信するテーブル行が設定されています (各行に追加された [計算] ボタンをクリックして)。ここまで - 各行から異なるデータを収集します。しかし、.post の結果を行入力フィールドに追加しようとすると、それを行だけに追加することができず、行セット全体に追加されます。理由はありますか?

$('a.calculate').click(function(e) {

   e.preventDefault();

   var a = $(this);
   var start_date = a.parents('tr').find('input.first-date').val();
   var end_date = a.parents('tr').find('input.last-date').val();

   $.post( "calculate.php", {start_date: ""+start_date+"", end_date: ""+end_date+""}, function(data){
            a.parents('tr').find('input.price').val(data);
   });

});
4

2 に答える 2

1

あなたのhtmlはわかりませんが、私が見る可能性のあるエラーは.parents('tr').

parents('tr')HTML(ネストされたテーブルtr)に依存するすべての先祖を返すため、行の外に出る可能性があり、後続の要素は複数の要素に一致する可能性があります。find('input.price')

最初に見つかったものに停止する which を使用してみてください.closest('tr')..

$('a.calculate').click(function(e) {

   e.preventDefault();

   var a = $(this);
   var start_date = a.closest('tr').find('input.first-date').val();
   var end_date = a.closest('tr').find('input.last-date').val();

   $.post( "calculate.php", {start_date: ""+start_date+"", end_date: ""+end_date+""}, function(data){
            a.closest('tr').find('input.price').val(data);
   });

});
于 2013-06-23T14:04:13.063 に答える
0

HTMLも共有してください。フォーマットエラーの可能性があります。

ちょっとしたコードのクリーンアップ:

$('a.calculate').click(function(e) {

   e.preventDefault();

   var a = $(this),
       tr = a.parents('tr').first(),
       start_date = $('input.first-date', tr).val(),
       end_date = $('input.last-date', tr).val();

   $.post( "calculate.php", {start_date: ""+start_date+"", end_date: ""+end_date+""}, function(data){
            $('input.price', tr).val(data);
   });

});
于 2013-06-23T14:05:08.320 に答える