В следующем 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>
Это означает, что вы хотите заполнить ближайший ящик ввода с помощью опции, выбранной из раскрывающегося списка:
<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/
Ваша проблема связана с этой строкой:
$(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".
$(ty).children().find(".kt").next('input').val('you value');