Используйте функцию $(this) и next() и т. д. в таблице

<table>
    <tr>
        <td class="one"><input type="text"></td><td class="two"><input type="text" value="12"></td><td class="three"><input type="text"></td>
    </tr>
    <tr>
        <td class="one"><input type="text"></td><td class="two"><input type="text" value="22"></td><td class="three"><input type="text"></td>
    </tr>
    <tr>
        <td class="one"><input type="text"></td><td class="two"><input type="text" value="14"></td><td class="three"><input type="text"></td>
    </tr>
</table>

$(".one input").change(function(){
   ???
})

ПРЯМОЙ ЭФИР: http://jsfiddle.net/34Vtk/

Если я заполняю значение в первый столбец (.one), то это значение следует умножить на .two input.val(), и результат должен отображаться в .three.input.val().

Я могу сделать это с идентификатором, но я не могу использовать функции $(this) и next() :( Этих входных данных много, и я должен использовать для этого $(this) и next(), а не идентификатор.


person Mick Segvezent    schedule 19.04.2012    source источник


Ответы (1)


Вам нужно использовать как $(this), так и родительский элемент tr в качестве контекста.

Попробуй это:

$(".one input, .two input").change(function() {
    var $row = $(this).closest("tr");
    var $one = $(".one input", $row);
    var $two = $(".two input", $row);

    var val1 = $one.val();
    var val2 = $two.val();
    var val3 = val1 * val2;

    $(".three input", $row).val(val3);
});

Пример скрипта

Скорее всего, вам также потребуется прикрепить это к .two input, чтобы фигура обновлялась при изменении этого элемента, а также некоторую форму проверки, чтобы гарантировать ввод правильных чисел.

Этот код можно сократить, я просто сделал его немного более подробным, чтобы было как можно понятнее, что происходит.

person Rory McCrossan    schedule 19.04.2012
comment
Спасибо. и как я могу всегда показывать результат как FLOAT? jsfiddle.net/34Vtk/6 теперь, если значение = 11,00, тогда это показывает мои только 22 вместо 22,00 - person Mick Segvezent; 19.04.2012