Исходя из кода, я предполагаю, что вы хотите взять число в каждой ячейке строки «Персональный пробег автомобиля», умножить его на показатель пробега пользователя и поместить результат в соответствующую ячейку в «Персональный автомобиль». Пробег $ "Строка.
Попробуйте это:
$('input.R4').change(function () {
var val = this.value,
cell = this.className.match(/C\d+/)[0];
val = parseInt(val, 10);
val *= <cfoutput>#mileage#</cfoutput>;
$('td.row5 input.' + cell)[0].value = val.toFixed(2);
});
Edit:
$ ('input.R4') должен выбирать каждый элемент ввода с классом "R4", поэтому это будет каждый элемент ввода в строке "Personal Car Пробег #".
Переменная «ячейка» (в ретроспективе именуется плохо) захватывает столбец ячейки, который только что изменился. Таким образом, если вы измените первое поле ввода, это будет «C1».
Ergo, $ ('td.row5 input.C1') затем захватит ввод с классом "C1" в пятой строке таблицы (строка "Personal Car Пробег $") и установит его значение в Расчетная сумма.
Итак, он уже должен работать для каждой ячейки в строке. Это возможно, потому что вы дали своим строкам, ячейкам и элементам ввода полезные имена классов - но будьте осторожны, числовые значения могут быть изменены позже. Если кто-то после того, как вы вставите новую строку в таблицу, тем самым сбросив числа, этот код, скорее всего, сломается.
Вы на правильном пути, добавив в эти слова "gasamountX" и "gasmoneyX", но я думаю, что вы должны снять с них цифры. Если вы это сделаете, вы можете изменить код на:
$('input.gasamount').change(function () {
var val = this.value,
column = this.className.match(/C\d+/)[0];
val = parseInt(val, 10);
val *= <cfoutput>#mileage#</cfoutput>;
$('input.gasmoney.' + column)[0].value = val.toFixed(2);
});
Имеет смысл?