2012-03-16 6 views
0

У меня есть поле выбора, которое также обновляет текстовое поле при выборе цены выбранного параметра. Любые идеи о том, почему это не работает?Обновить ввод текста из выбранной опции выбора

Html:

<label for="material1" class="select">Material:</label> 
<select name="material" id="material1" data-native-menu="false" rel="price1"> 
<option>Select Material</option> 
<option value="55 Bolt" rel="125,000.00">55 Bolt</option> 
</select> 
<label for="net1">Net Price:</label> 
<input type="text" name="net" id="net1" rel="price1" value="" /> 

JS:

<script type="text/javascript"> 
$("material1").change(function() { 
    $(this).next("input[rel="+$(this).attr("rel")+"]").val($(this).val()); 
    $('#net1').textinput('refresh'); 

}).change(); 
</script> 

ответ

1

Ваша основная проблема заключается в том, что mgoeppner имеет некоторые хорошие предложения.

$(this).next("input[rel="+$(this).attr("rel")+"]").val($(this).val()); 

$(this).val() относится к значению select, который является нулевым. Вы должны обратиться к значению выбранного параметра. Тогда next() не будет работать, потому что input не находится рядом с select, между ними находится label. Вы можете использовать closest()

var value = $(this).find('option:selected').val(); 
$(this).closest("input[rel="+$(this).attr("rel")+"]").val(value); 
+0

tred this, но не пойти? –

+0

Я добавил это в jsfiddle jsfiddle.net/7dSZm, пытающийся обе ваши варианты, похоже, не работает? - –

+0

У вас есть несколько синтаксических ошибок, и если вы следуете моему примеру, это работает, посмотрите http://jsfiddle.net/elclanrs/7dSZm/2/ – elclanrs

1

Это не будет работать по нескольким причинам:

  1. $(this).next() вернется [] со следующего брата <label> не вход с соответствующим атрибутом rel. Вместо этого попробуйте использовать $(this).siblings("input[rel="+$(this).attr("rel")+"]").

  2. В jQuery API нет функции textinput(). Возможно, вы имели в виду text()?

Наконец, вам не нужно делать $(...).change(function()...).change() - $(...).change(function()...) будет достаточно.

+0

Это JQuery мобильный, что обновление является то, что их код требует, чтобы обновить поля, поскольку они используют класс CSS в верхней части поля формы. Этикетка также является частью их кода. Я попробую ваши предложения и посмотрю, что произойдет. –

+0

По-прежнему нет, вот что я сделал: Я пробовал это: $ (this) .siblings ("input [rel =" + $ (this) .attr ("rel") + "]"). Val ($ (это) .val()); –

+0

и я попробовал: $ (this) .siblings ("input [rel =" + $ (this) .attr ("rel") + "]"); –

Смежные вопросы