Jquery выбрать следующий текст ввода значения

0

У меня есть динамические флажки вместе с соответствующими вводами текста. То, что я пытаюсь достичь, - это когда установлен флажок, чтобы было указано, что введено специальное значение ввода флажка. Я не могу получить значение ввода текста. На данный момент все флажки предупреждают значение первого текстового поля, а не правого. Также по умолчанию текстовые входы должны быть скрыты до тех пор, пока не будет установлен флажок, который затем отобразит соответствующее текстовое поле

http://jsfiddle.net/hpJMN/55/

Выше - простой пример того, что я пытаюсь достичь.

 <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 + '">&nbsp;' + (x + 1) + '&nbsp<br>' + '<input type="text" name="qty" id="' + (x + 1) + '" title="Qty needed" size="1" maxlength="2"><br>');
    }
}
Теги:
dom

3 ответа

0
Лучший ответ

Измените свою строку следующим образом:

alert($(this).siblings("input[type=text]").val());

к этому:

alert($(this).nextAll("input[type=text]").first().val());

Главное отличие заключается в том, чтобы использовать nextAll вместо sibling. Метод "братья и сестры" найдет всех братьев и сестер (до и после), в то время как nextAll найдет всех братьев и сестер после выбранных элементов (это то, что вы хотите).

3

Вам нужно изменить свой селектор, чтобы, вероятно, что-то подобное на основе вашей разметки, братья и сестры выберет все ваши поля ввода (это братья и сестры), и вы делаете 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();

демонстрация

0

Попробуй это

 alert($(this).nextAll("input:text").get(0).value);

DEMO

Ещё вопросы

Сообщество Overcoder
Наверх
Меню