2012-03-16 36 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()は、inputselectの横にないため、機能しません。その間にlabelがあります。あなたがこれはjqueryの携帯でclosest()

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

がこれを修正しましたが、どちらも表示されません。 –

+0

私はこれをjsfiddle jsfiddle.net/7dSZmに追加しました。両方のオプションを試してもうまくいきませんか? - –

+0

いくつかの構文エラーがあります。私の例に従えば、選択肢の値を表示するhttp://jsfiddle.net/elclanrs/7dSZm/2/ – elclanrs

1

それはいくつかの理由のために動作しません。次の兄弟<label>ではないので

  1. $(this).next()[]を返します。一致するrel属性を持つ入力。代わりに$(this).siblings("input[rel="+$(this).attr("rel")+"]")を使用してみてください。

  2. jQuery APIには、textinput()関数がありません。おそらくtext()を意味するのでしょうか? $(...).change(function()...)十分でしょう -

最後に、あなたは$(...).change(function()...).change()を行う必要はありません。

+0

使用することができ、リフレッシュは、彼らがフォームフィールドの上にCSSクラスを使用してフィールドを更新するためにコードを呼び出すものです。ラベルもコードの一部です。私はあなたの提案を試し、何が起こるか見てみましょう。 –

+0

私はこれを試しました:$(this).siblings( "input [rel =" + $ this ".attr(" rel ")+"] ")val this).val()); –

+0

と私は試しました:$(this).siblings( "入力[rel =" + $(this).attr( "rel")+ "]"); –

関連する問題