<tr>
<td>
<input type="text" name="desc[]">
</td>
<td>
<input type="text" name="duration[]">
</td>
<td>
<input type="text" name="start[]" class="start">
</td>
<td>
<input type="text" name="wait[]">
</td>
<td>
<input type="text" name="end[]">
</td>
<td>
<input type="text" name="phone[]">
</td>
</tr>
У меня есть такие несколько строк. Я должен выбрать значения от всего tds на keyup событии на td с входным именем, запускаются (и я также должен избежать значений desc [] и телефон []). Так как они - многие, я не могу пойти с идентификаторами, нуждаться в помощи в родительском дочернем подходе с jQuery.
Я смог достигнуть, родительский TR на keyup событии на вышеупомянутом упомянул td, но не способный получить доступ к значениям поля ввода в другом tds. код jQuery, который я использовал
$(document).ready(function(){
$(".start").keyup(function(){
alert($(this).parent().get(-3).tagName);
})
});
Ах, я думаю, теперь пойму. Посмотрите, действительно ли это то, что вам нужно:
$(".start").keyup(function(){
$(this).closest('tr').find("input").each(function() {
alert(this.value)
});
});
Это даст вам все входные значения строки.
Обновление:
Чтобы получить значение , а не , вы можете использовать все элементы : not ()
:
$(this).closest('tr').find("input:not([name^=desc][name^=phone])").each(function() {
alert(this.value)
});
На самом деле я не уверен на 100%, работает ли это так Кстати, возможно, вам придется использовать два not
вместо этого, объединяющего оба условия.
Мне трудно понять, что именно вы здесь ищете, поэтому надеюсь, что я не ошибся.
Я предполагаю, что вы имеете в виду, что когда происходит событие keyup на входе с классом "start", вы хотите получить значения всех входов в соседних
$('.start').keyup(function() {
var otherInputs = $(this).parents('td').siblings().find('input');
for(var i = 0; i < otherInputs.length; i++) {
alert($(otherInputs[i]).val());
}
return false;
});
var values = {};
$('td input').each(function(){
values[$(this).attr('name')] = $(this).val();
}
Не тестировали, но это должно сработать ...
{{1} }