2014-10-03 63 views
1

我得到的形式下拉。我有兩個區域在我的形式,我想,如果用戶選擇出現一個框「等......」在選擇菜單中的JavaScript或操作不工作

我寫這可能兩個下拉的工作的功能,通過裏面的字符串比較下拉的價值選擇(其中包含「其他1」和「其它2」)與兩個字符串「其他1」和「其它2」我的函數裏面的選擇。

$('.select-other').change(function() { 
     if($(this).find('option:selected').val() === ('other1' || 'other2')){ 
      ($(this).closest('div').next().show()); 
    } 
}); 

但似乎只測試的第一個值,無視我的比較操作...

是否有可能糾正呢?

我錯過了什麼嗎?

+0

你申請或兩個變量,other1和其他2。既然他們是字符串,你會得到真實的,那麼你檢查三重等於真。其他類型?爲什麼三重平等? – Elric 2014-10-03 20:49:01

回答

1

試試這個:

$('.select-other').change(function() { 
    var value = $(this).find('option:selected').val(); 
    if(value === 'other1' || value === 'other2'){ 
     ($(this).closest('div').next().show()); 
} 
+1

作爲附錄我會打電話'$(本).find(「選項:選擇」)。VAL()'一次,並存儲在比較前值。 – Lloyd 2014-10-03 20:47:57

+0

補充說,在張貼有點懶。 :) – Tyr 2014-10-03 20:49:16

2

不幸的是,你可以不寫條件語句的方式。你必須明確。

而且我會保存所選擇的選項:

var value = $(this).find('option:selected').val(); 

if (value === 'other1' || value === 'other2')) { 
0

您的條件是錯誤的,你不能做到這一點:

$(this).find('option:selected').val() === ('other1' || 'other2'); 

由於非空字符串將始終返回true,('other1' || 'other2')將始終返回「other1」

您需要單獨檢查這些值:

var value = $(this).find('option:selected').val(); 
value === 'other1' || value === 'other2' 
0

您需要的價值兩個選項進行比較。你想現在要做的方式是像做$(this).find('option:selected').val() === 'other1'

你可以做2檢查這樣的:

$('.select-other').change(function() { 
    var currentValue = this.value; 
    if(currentValue === 'other1' || currentValue === 'other2'){ 
     ($(this).closest('div').next().show()); 
    } 
}); 

或者使用正則表達式:

$('.select-other').change(function() { 
    var currentValue = this.value; 
    if(currentValue.match(/^(other1|other2)$/)){ 
     ($(this).closest('div').next().show()); 
    } 
}); 
+0

很好的答案,非常感謝。 – user3781018 2014-10-03 20:54:41