2013-11-15 185 views
0

我有兩個選擇列表,並需要改變一個價值基於其當前狀態,以便:jQuery的改變基於兩個選項選擇列表值值

選擇列表1:

Option A (All) 
Option B (12) 
Option C (13) 

選擇列表2:

Option 1 (All) 
Option 2 (14) 
Option 3 (15) 
Option 4 (16) 

如果選擇列表1 =選項C & &選擇列表2 =選項2然後改變選擇列表1到選項A.

我有以下代碼:

$('#edit-lines, #edit-trading-options').change(function() { 
    if ($('#edit-lines').val().indexOf(13) && $('#edit-trading-options').val().indexOf(14) > -1) $('#edit-trading-options').val('All'); 
}); 

但有些事情是不對的。第二個選擇始終停留在「全部」。

感謝,

史蒂夫

+2

,而不是.VAL()的indexOf(13),你應該使用.VAL()== 13 –

+0

你能使你的情況小提琴。? –

+1

或者如果您必須使用'.indexOf',則需要使用'!= -1',就像您在第二次測試時所做的那樣。 – Barmar

回答

2

如果只是那些2個特定選項,那麼這樣做:

$('#edit-lines, #edit-trading-options').change(function() { 
    if ($('#edit-lines').val() == 13 && $('#edit-trading-options').val() == 14) 
    $('#edit-trading-options').val('All'); 
}); 
+0

謝謝大衛。剛剛嘗試在小提琴http://jsfiddle.net/mj9L7/1/和工程很好。我還有一個AJAX圖層,當狀態改變到選擇列表時,它會自動提交。使用dev中的代碼,直到刷新頁面才能工作。我假設這是相關的?任何想法如何我可以防止這一點? –

+0

很高興爲你工作。不知道我理解你的後續問題。你能否提供更多細節? –

0

我認爲#edit-lines第一選擇,那麼你爲什麼改變第二個價值?
另外,if語句中的第一個條件是錯誤的。它總是會返回TRUE,因爲您將字符串與數字進行比較(數字13作爲indexOf的參數傳遞)。
您不需要使用.indexOf()方法。只需比較這些值。

這裏的例子:

$('#edit-lines, #edit-trading-options').change(function() { 
    if ($('#edit-lines').val() == 13 && $('#edit-trading-options').val() == 14) 
     $('#edit-lines').val('All'); 
}); 
相關問題