从选择的选项中更新文本输入

时间:2012-03-16 23:37:57

标签: jquery jquery-mobile

我有一个选择字段,当选择该选定字段的价格时,该字段也会更新文本字段。关于为什么这不起作用的任何想法?

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>

2 个答案:

答案 0 :(得分:1)

由于以下几个原因,它不起作用:

  1. $(this).next()将返回[],因为下一个兄弟<label>不是具有匹配rel属性的输入。请尝试使用$(this).siblings("input[rel="+$(this).attr("rel")+"]")

  2. jQuery API中没有textinput()函数。也许你的意思是text()

  3. 最后,您无需执行$(...).change(function()...).change() - $(...).change(function()...)即可。

答案 1 :(得分:1)

你的主要问题在这里, mgoeppner 也提出了一些很好的建议。

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

$(this).val()指的是select的值为null。您必须参考所选选项的值。然后next()将无效,因为input不在select旁边,其间有label。您可以使用closest()

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