У меня есть динамические флажки вместе с соответствующими вводами текста. То, что я пытаюсь достичь, - это когда установлен флажок, чтобы было указано, что введено специальное значение ввода флажка. Я не могу получить значение ввода текста. На данный момент все флажки предупреждают значение первого текстового поля, а не правого. Также по умолчанию текстовые входы должны быть скрыты до тех пор, пока не будет установлен флажок, который затем отобразит соответствующее текстовое поле
Выше - простой пример того, что я пытаюсь достичь.
<h3>Checkbox Toggle input element</h3>
<div class="equipment">
</div>
printarr();
скрипт
$(".equipment input:checkbox").change(function () {
alert($(this).siblings("input[type=text]").val());
});
function printarr() {
for (var x = 0; x < 4; x++) {
$(".equipment").append(
'<input type="checkbox" name="drill_eq[]" value="' + x + '"> ' + (x + 1) + ' <br>' + '<input type="text" name="qty" id="' + (x + 1) + '" title="Qty needed" size="1" maxlength="2"><br>');
}
}
Измените свою строку следующим образом:
alert($(this).siblings("input[type=text]").val());
к этому:
alert($(this).nextAll("input[type=text]").first().val());
Главное отличие заключается в том, чтобы использовать nextAll вместо sibling. Метод "братья и сестры" найдет всех братьев и сестер (до и после), в то время как nextAll найдет всех братьев и сестер после выбранных элементов (это то, что вы хотите).
Вам нужно изменить свой селектор, чтобы, вероятно, что-то подобное на основе вашей разметки, братья и сестры выберет все ваши поля ввода (это братья и сестры), и вы делаете eq(0)
который получит только значение первого (событие с eq(0)
вы по-прежнему будете только значением первого):
$(this).next().next().val();
или
$(this).nextUntil('input[type=text]').next().val(); //If you are not sure how many other elements may come in between these
или
$(this).nextAll('input[type=text]').first().val(); //If you are not sure how many other elements may come in between these
или
$(this).nextAll('input[type=text]:first').val();