2014-04-10 76 views
0

我試圖填充並顯示select如果前12個下拉列表中有一個值。如果兩個選擇值已被選擇運行功能

我似乎無法得到我的if語句正確,但任何人都可以看到我可能做錯了什麼?

$('select').on('change',function(){ 

if($('.player1') != null || $('.player2') != null){ 

    // If both players have been selected, show the winner dropdown and populate it with the value from player1 and player 2. 
    $('.winner').show(); 

} 

}); 

http://jsfiddle.net/kbPLn/1/

+0

你的例子中的下拉菜單怎麼沒有價值? – laaposto

+0

我希望該下拉菜單的值可以是前面2個下拉菜單中選擇的值 – Liam

回答

0

你永遠不會爲空的情況。(因爲你不是檢查.VAL ......而且,他們總是有一個VAL)更新你的HTML +你的選擇在這裏:

http://jsfiddle.net/kbPLn/5/

if($('.player1>option:selected').val() != "No value" && $('.player2>option:selected').val() != "No value"){ 

更新 http://jsfiddle.net/kbPLn/9/

 var first = $('.player1>option:selected').val(), 
     second =$('.player2>option:selected').val(); 

     $('.winner').find('option:first').val(first).html(first); 
     $('.winner').find('option:not(:first)').val(second).html(second); 
     $('.winner').show(); 
+0

Ahh謝謝@JFit,是否有可能從第2個下拉,然後填充第二選擇與那些? – Liam

+0

是的 - 1秒病了更新 –

+0

@Liam那你在找什麼? http://jsfiddle.net/kbPLn/9/ –

0

你需要使用&&檢查時否定值

1

一個jQuery對象永遠等於null。你可以做的是檢查集合的length屬性。此外,它看起來像你想要&&而不是||

if ($('.player1>option:selected').length && $('.player2>option:selected').length) { 

編輯:你需要做的是檢查它是否有一個選擇的子選項。

+0

應該是'$('。player1> option:selected')。length' *您在那裏檢查的元素總是有長度= 1。 –

+0

...............................看看他的jsfiddle ......... –

+0

糟糕。 :P我會解決這個問題。 – Scimonster

0
Try this. This may help you: 
$('select').on('change', function() { 
      $('select[name="winner"]').html(''); 
      if ($('.player1') != null || $('.player2') != null) { 

       // If both players have been selected, show the winner dropdown and populate it with the value from player1 and player 2. 
       $('.winner').show(); 

       //$('.winner'). 
      } 
      $('select[name="winner"]').append('<option value="' + $(".player1").val() + '">' + $(".player1").val() + '</option>'); 
      $('select[name="winner"]').append('<option value="' + $(".player2").val() + '">' + $(".player2").val() + '</option>'); 
     });