2012-04-18 89 views
1

上一個新的我有以下幾點:刪除選定的屬性,並添加選擇的元素

HTML

<select class="dropDownList" id="PersonFunction"> 
    <option value="">Choose</option> 
    <option value="1">Vice President</option> 
    <option value="2">Director</option> 
    <option value="3">Secretary</option> 
    <option value="4">Clerk</option> 
</select>​ 

JS

$("#PersonFunction").change(function() {  
    $("option", this).eq($(this).val()).attr('selected', 'selected'); 
});​ 

所以指數的變化後,我設置選定的屬性和它的作品,但在用戶再次改變索引後,我又設置了另一個選定的屬性e不同的價值,我不想那樣。

<select class="dropDownList" id="PersonFunction"> 
    <option value="">Choose</option> 
    <option value="1" selected="selected">Vice President</option> 
    <option value="2" selected="selected">Director</option> 
    <option value="3">Secretary</option> 
    <option value="4">Clerk</option> 
</select> 

我該如何首先刪除選定的屬性,如果存在然後添加一個?

的jsfiddle這裏:http://jsfiddle.net/mgrcic/HCrS2/

回答

8
$('#PersonFunction').on('change', function() { 
    $('option:selected', this).attr('selected',true).siblings().removeAttr('selected'); 
}); 

DEMO

+0

它選擇所有,它不起作用。 – 2012-04-18 08:45:29

+0

@plurby它會工作 – thecodeparadox 2012-04-18 08:54:30

+0

現在它的工作。謝謝。 – 2012-04-18 08:59:21

4

沒有必要更新selected編程參數,因爲瀏覽器會自動知道選擇哪個元素。 selected屬性僅用於在頁面加載時設置默認選項。

爲了獲得當前選定的選項,只需使用以下命令:

var selectedValue = $("#PersonFunction option:selected").val(); 

Example Fiddle


更新

如果出於某種原因你想設置一個selected屬性(正如我可以理解的,你正在動態地創建另一個表單),試試這個:

$("#PersonFunction").change(function() { 
    $("option", $(this)).removeAttr("selected"); 
    $("option:selected", $(this)).attr("selected", true); 
});​ 
+0

是)在形式動態創建,我沒有選定的屬性,所以帖子不起作用。我知道如何獲得價值,並沒有要求這樣做。 – 2012-04-18 08:29:08

+0

好的,看看我的更新 - 雖然我還沒有完全理解你用來需要這個的邏輯。 – 2012-04-18 08:33:02

+1

您可能想在另一個問題中發佈整個代碼,包括動態表單創建和發佈,因爲我不認爲這是實現您所需的最佳方式。沒有更多的細節,很難說。 – 2012-04-18 08:35:01

-1

這會提醒您選中的文本。改變的.text()來.VAL(),如果你希望它因爲在遞交I存儲DIV用戶點擊(這裏我所有的領域後,拿起選項值,而不是

$("#PersonFunction").change(function() { 
    var selected = $("option:selected").text(); 
    alert(selected); 
}); 
相關問題