2012-03-22 15 views
0

私は、次のコードを持っている。その結果、2つのspanタグに示されている時点ではjQueryの:テキストボックスに表示結果

http://jsfiddle.net/uRCL2/1

、私はのような2つのショーに参加するために変更する必要がありますか何を値はid=skuのテキストボックスにありますか?


JS:

$("#options").change(function(){ 
switch($(this).val()){ 
    case "3370": 
     $(".display_text_here").text('TB'); 
    break; 
    case "3371": 
     $(".display_text_here").text('LT'); 
    break; 
    case "3375": 
     $(".display_text_here").text('LTR'); 
    break; 
    case "3372": 
      $(".display_text_here").text('BO'); 
    break; 
    case "3373": 
     $(".display_text_here").text('MC'); 
    break; 
    case "3374": 
     $(".display_text_here").text('NC'); 
    break; 
    case "3376": 
      $(".display_text_here").text('STA'); 
    break; 

    } 
}); 
$("#options2").change(function(){ 
    switch($(this).val()){ 
    case "3423": 
      $(".display_text_here2").text('12'); 
    break; 
    case "3424": 
     $(".display_text_here2").text('24'); 
    break; 
    case "3425": 
     $(".display_text_here2").text('48'); 
    break; 

} 
}); 

HTML:

<select id="options"> 
<option value="">Choose...</option> 
<option value="3370" >Tight Buffered </option> 
<option value="3371" >Loose Tube 900um </option> 
<option value="3375" >Loose Tube 2mm </option> 
<option value="3372" >Break-Out 2mm </option> 
<option value="3373" >Micro Cable 2mm </option> 
<option value="3374" >Nano Cable 900um </option>              
<option value="3376" >Steel Tape Armoured 900um </option> 
</select> 
<select id="options2"> 
    <option value="">Choose...</option> 
    <option value="3423" >12 MC</option> 
    <option value="3424" >24 MC</option> 
    <option value="3425" >48 MC</option> 
</select> 
<br /> 

<span class="display_text_here"></span><span class="display_text_here2"></span> 
<br /> 

<input type="text" id="sku">​ 
+1

結果はdivに表示され、テキストボックスは表示されません。また、jsfiddleだけでなく、あなたの質問にコードを投稿してください。 –

+0

テキストボックスが表示されません。 – Igor

+0

"2つを結合し、テキストボックスに値として表示する" - 何 "2つ"?あなたは、最終結果をどのように見せたいかの例を挙げることができますか? –

答えて

3

あなたは、変数の各部分の値を保存し、あなたが見ることができるように変更の両方を割り当てることができますon this jsfiddle

+0

それはうまくいく、私は追加する別のオプションがある場合私はちょうど+ sku_part3を追加して値を構築することができますか? –

+0

@VincePettit良い!また、別のオプションに+ sku_part3を追加するだけの場合は、ユーザーがオプション "Choose ..."を選択した場合、その値がそのまま残りますので、デフォルトのケースを追加することをお勧めします「選択」オプションを選択した場合に変数を空にするように切り替えます。 – DarkAjax

+0

私の解決策を見てください。私はもう少しリファクタリングして関数に入れました。そうすることで、スコープの拡大に応じて複数のオカレンスではなく、1つの関数を更新しています。 –

1

HTML:

<input type="text" name="sku" id="sku"/> 

JS:

#options 
    case "3370": 
     $("#sku").val('TB'+$("#sku").val()); 
     break; 

#options2 
    $("#sku").val($("#sku").val()+'24'); 
+0

これは1つではありますが、更新された質問が表示された場合は、1つのテキストボックスに2つの値を組み合わせる必要があります –

+0

@VincePettit今すぐ参照 – mgraph

+0

また、最初と2番目のボックスの値が設定されている場合、最初の選択ボックスが変更され、元の値がボックスに残ります。 http://jsfiddle.net/uRCL2/3/ –

0

$(".display_text_here").append('TB'); 
0

を試してみてください現在の結果は、1つのdivない2 spanタグに示されているように見えます。

$(".display_text_here").text('TB'); 

:しかし例は明らかにtextboxを追加し、修正することで、結果を変更する

$("#sku").val('TB'); 
1

私はあなたのコードにいくつかの自由を取りました。ここでは以下の繰り返しを必要とするソリューションがあります:http://jsfiddle.net/ReeaN/

HTML

<select id="options"> 
    <option value="">Choose...</option> 
    <option value="3370" data-code="TB" >Tight Buffered </option> 
    <option value="3371" data-code="LT">Loose Tube 900um </option> 
    <option value="3375" data-code="LTR">Loose Tube 2mm </option> 
    <option value="3372" data-code="BO">Break-Out 2mm </option> 
    <option value="3373" data-code="MC">Micro Cable 2mm </option> 
    <option value="3374" data-code="NC">Nano Cable 900um </option> 
    <option value="3376" data-code="STA">Steel Tape Armoured 900um </option> 
</select> 
<select id="options2"> 
    <option value="">Choose...</option> 
    <option value="3423">12 MC</option> 
    <option value="3424">24 MC</option> 
    <option value="3425">48 MC</option> 
</select> 
<br /> 

<span class="display_text_here"></span><span class="display_text_here2"></span> 
<br /> 

<input type="text" id="sku"> 

Javascriptを:

$("#options").change(function(){ 
    var val = ''; 
    if ($(this).val() != '') { 
     val = $(this).find('option:selected').data('code'); 
    } 
    $(".display_text_here").text(val); 
    updateDisplay(); 
}); 
$("#options2").change(function(){ 
    var val = ''; 
    if ($(this).val() != '') { 
     val = $(this).find('option:selected').text().split(' ')[0]; 
    } 
    $(".display_text_here2").text(val); 
    updateDisplay(); 
}); 

function updateDisplay() { 
    $('#sku').val($(".display_text_here").text() + $(".display_text_here2").text()); 
} 
+0

残念ながら、私は 'data-code =" TB "'他の場所でオプションが生成されるので、オプションにセクションを追加します。しかし、努力してくれてありがとう、私ができるならば完璧だろう。 –

+0

まあ、とにかく面白い練習でした。データが時間の経過とともに変化する場合、Javascriptハッシュテーブルに切り替えてコードを参照することを検討することもできます。それ以外の場合は、ケースステートメントを代わりに維持します。 –

関連する問題