2010-12-13 52 views
2

我試圖讓所選擇的下拉值和具有期權價值的DIV進行了slideDown:jQuery的獲取所選的下拉VALUE

$(function() 
{ 
    $('#show-options').change(function(){ 
     $('#show-options').val().slideDown(); 
     return false; 
    }); 
}); 

<select id="show-options"> 
    <option value="">Select an Option</option> 
    <option value="vehicle-type">Vehicle Type</option> 
    <option value="vehicle-colour">Vehicle Colour</option> 
</select> 

<div id="vehicle-type" style="display: none;"> 
    ... 
</div> 

<div id="vehicle-colour" style="display: none;"> 
    ... 
</div> 

這似乎並不奏效。

編輯:同樣,一旦選擇了特定的選項,它應該從下拉列表中刪除,下拉列表應該集中在頂部選項(「選擇選項」)上。

編輯2:一旦選擇了特定的選項,下拉應該移動到已經顯示的新DIV下(或者新的DIV應該高於下拉)。

編輯3:這些隱藏的div包含表單元素(複選框或下拉列表)。默認情況下,我已將這些表單元素設置爲「禁用」。當顯示DIV時,需要將這些表單元素「啓用」。理想情況下,我希望它查找該div中的任何表單元素(可能不止一個),而不是明確指定要指向哪些表單元素。

編輯:我想通了:

$('#' + $(this).val() + ' :input').removeAttr('disabled'); 

編輯4:一旦提交後,即提交了之前顯示任何的DIV需要自動顯示。我可以檢查我的PHP中的GET變量,但我需要模仿「更改」功能的jQuery代碼 - 我認爲這與觸發器或綁定有關。

+0

好吧,也許你已經理解了它,但你可以用'.trigger( '變')'或'簡單.change()'。 – 2010-12-13 22:31:16

回答

2

嘗試:

$('#' + $(this).val()).slideDown(); 

編輯:

要刪除當前選定的選項,請使用:

if ($(this).val()) { 
    $(this).find('option:selected').remove(); 
} 

select將自動返回到首選項。

編輯2:

var $this = $(this), 
    val = $this.val(); 

if (val) { 
    $('#' + val).slideDown().insertBefore(this); 
    $this.find('option:selected').remove(); 
} 
+0

乾杯,這工作,我也更新了我的問題。 – GSTAR 2010-12-13 15:44:07

+0

這太棒了,這是完美的作品。順便說一句,我只是意識到我可以把我的選擇放在所有隱藏的div下方,並且它們會出現在它上面:) – GSTAR 2010-12-13 15:54:31

+0

剛剛更新了我的問題 - 需要最後一點幫助:) – GSTAR 2010-12-13 16:29:19

3

$('#show-options').val()返回一個字符串 - 在這種情況下,它也與$(this)相同。你需要用這一個jQuery選擇,使其工作(以及使用id選擇):

var selectedOption = $(this).val(); 
$("#" + selectedOption).slideDown(); 

例子:http://jsfiddle.net/jonathon/3S8kZ/

4
$('#show-options').change(function(){ 
    $('#' + $(this).val()).slideDown(); 
    return false; 
}); 
相關問題