#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть страница с таблицей из нескольких строк (HTML сгенерирован, я не могу его изменить). В каждой строке есть 2 ввода (разные столбцы). Когда я изменяю значение одного из входных данных (с именем класса «qty»), я хочу получить значение второго ввода, но я не могу этого сделать. Обратите внимание, что количество строк не является фиксированным
Мой сгенерированный HTML и попытка
jQuery('.qty').on('change', function() {
console.log(jQuery(this).val());
console.log($(this).closest("tr").children('.product_quantity').children('input').val());
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
```
<table>
<thead>
<tr>
<th>Name</th>
<th>Price</th>
<th class="product-quantity">Quantity 1</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td class="product-name">Name product 1</td>
<td>$1,00</td>
<td class="product-quantity">
<input type="number" min="1" step="1" name="items[45955][quantity]" value="4">
</td>
<td>
<div>
<input type="number" class="qty" step="1" min="0" max="" name="quantity" value="1" title="Qté" size="4" placeholder="" inputmode="" kl_vkbd_parsed="true">
</div>
</td>
</tr>
<tr>
<td class="product-name">Name product 1</td>
<td>$1,00</td>
<td class="product-quantity">
<input type="number" min="1" step="1" name="items[45955][quantity]" value="4">
</td>
<td>
<div>
<input type="number" class="qty" step="1" min="0" max="" name="quantity" value="1" title="Qté" size="4" placeholder="" inputmode="" kl_vkbd_parsed="true">
</div>
</td>
</tr>
</tbody>
</table>
Я пытался изменить ближайший родительский и многие другие тесты, но я не могу этого сделать
Не могли бы вы мне помочь, пожалуйста?
Комментарии:
1.
closest('tr').find('input').eq(1)
чтобы получить второй2. Может быть, не помешало бы поставить
id="product-xxxx"
на<tr>
? таким образом, вы также можете отправить пользователя к этому продукту, возможно, создать некоторый:target
стиль и немного упростить ближайшую цель, выполнив:closest('[id^=”product-”]').find(...)
3. Обратите внимание, что 2-й ввод никоим образом не является «родительским» для первого ввода (на основе заголовка parent-parent-родитель)
4.Обратите внимание, что
$(".product_quantity")
не будет найдено<td class="product-quantity">
"_" !== "-"
— исправьте опечатку (измените наclass='product_quantity'
в обеих строках), и ваш код будет работать нормально.
Ответ №1:
Я предполагаю, что вы хотите получить значение действия при изменении значения количества
Попробуйте это
$('.product-quantity input').on('keyup', function () {
console.log($(this).val());
console.log($(this).parent('td').next('td').find('div input').val());
})
Ответ №2:
Попробуйте это:
$(this).parent().parent().parent().find(".product-quantity input").val();