2012-03-16 79 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也有一些很好的建議。

​​3210

$(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,但是不行嗎? – 2012-03-17 00:09:13

+0

我將此添加到jsfiddle jsfiddle.net/7dSZm嘗試你的兩個選項似乎沒有工作? - – 2012-03-17 00:21:12

+0

你有幾個語法錯誤,如果你按照我的例子,它的工作原理,請看http://jsfiddle.net/elclanrs/7dSZm/2/ – elclanrs 2012-03-17 00:24:27

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 Mobile的,刷新的東西他們的代碼調用,因爲他們使用的CSS類的表單字段的頂部更新的字段。標籤也是他們代碼的一部分。我會嘗試你的建議,看看會發生什麼。 – 2012-03-17 00:03:49

+0

還是不行,這是我做的:我試過這個:$(this).siblings(「input [rel =」+ $(this).attr(「rel」)+「]」)。val($(此).VAL()); – 2012-03-17 00:08:31

+0

我試過:$(this).siblings(「input [rel =」+ $(this).attr(「rel」)+「]」); – 2012-03-17 00:08:54

相關問題