jquery найти ближайший элемент с известным братом

0

В следующем html-коде. У меня есть выпадающие окна, выбранные значением. Теперь я хочу заполнить поле ввода рядом с ним.

Для этого я использую следующий код. Но как заполнять соответствующие текстовые поля.

var ty =$(".edata");
$(ty).children().find(".kt").html('').append('//Appending values to drop down');
for(var item in key_val_pair)
{
    $(ty).children().find(".kt").removeAttr('selected')
    $(ty).children().find(".kt option:eq("+item+")").prop('selected',true);                 
    $(ty).children().find(".kt option:eq("+item+")").closest('.e_val').val(key_val_pair[item])
}

РЕДАКТИРОВАТЬ:

 Lets say key_val_pair="{\"1\":\"123\",\"4\":\"456\"}"

HTML

<div class="edata">
    <span class="b1">
        <select class="kt">
            <option value="1">k1</option>
            <option value="2" >k2</option>
        </select>
        <input type="text" placeholder="val" class="e_val"/>
    </span>
    <span class="b1">
        <select class="kt">
            <option value="3">k3</option>
            <option value="4" >k4</option>
        </select>
        <input type="text" placeholder="val" class="e_val"/>
    </span>
</div>
Теги:

3 ответа

1

Это означает, что вы хотите заполнить ближайший ящик ввода с помощью опции, выбранной из раскрывающегося списка:

<script>
     key_val_pair = { 
            "1" : "123",
            "2" : "321",
            "3" : "999",
            "4" : "456" };

     $('.kt').on('change', function() {
         $(this).siblings('.e_val')
                .val( key_val_pair[ $(this).find('option:selected').val() ] );
     });
</script>

Скрипт: http://jsfiddle.net/3Dtzb/2/

  • 0
    Я не хочу делать это в событии onchange. Я хочу сделать это в цикле for, который я указал, потому что именно там я получаю свой ключ и значения из ..
  • 0
    Допустим, говорят, что key_val_pair = "{\" 1 \ ": \" 123 \ ", \" 4 \ ": \" 456 \ "}"
Показать ещё 5 комментариев
0

Ваша проблема связана с этой строкой:

$(ty).children().find(".kt option:eq("+item+")").closest('.e_val').val(key_val_pair[item])

ближайший() находит только предков, поэтому вы говорите ему, чтобы найти предка с классом "e_val" этого параметра. Вы действительно хотите

$(ty).children().find(".kt option:eq("+item+")").parent().siblings('.e_val').val(key_val_pair[item])

чтобы перейти к (родительскому), а затем к его ассоциированному брату с классом "e_val".

0
$(ty).children().find(".kt").next('input').val('you value');
  • 2
    Возможно, вы захотите разработать немного больше, чем просто вставка однострочного кода ...
  • 0
    но так как мы используем этот класс .. последнее значение будет во всех текстовых полях
Показать ещё 1 комментарий

Ещё вопросы

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