我有一个选择字段,当选择该选定字段的价格时,该字段也会更新文本字段。关于为什么这不起作用的任何想法?
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>
答案 0 :(得分:1)
由于以下几个原因,它不起作用:
$(this).next()
将返回[]
,因为下一个兄弟<label>
不是具有匹配rel属性的输入。请尝试使用$(this).siblings("input[rel="+$(this).attr("rel")+"]")
。
jQuery API中没有textinput()
函数。也许你的意思是text()
?
最后,您无需执行$(...).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);