2012-04-18 2 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

Он выбирает все, и он не работает. –

+0

@plurby будет работать – thecodeparadox

+0

Теперь он работает. Спасибо. –

4

Там нет необходимости обновлять selected атрибут программно, как браузер будет автоматически знать, какой элемент выбран. Атрибут selected предназначен только для установки опции по умолчанию при загрузке страницы.

Для получения текущей выбранной опции, просто используйте следующую команду:

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

Example Fiddle


Update

Если по какой-либо причине вы хотите установить атрибут selected (как форма, которую я могу понять, вы создаете другую форму динамически), попробуйте следующее:

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

Потому что после того, как пользователь нажмет на представить я хранить DIV (где все мои полей) в форме, которая создается динамически, и у меня нет выбранного атрибута, поэтому сообщение не работает. Я знаю, как получить ценность и не просил об этом. –

+0

Хорошо, посмотрим мое обновление - хотя я до сих пор не совсем понимаю логику, которую вы используете, чтобы требовать этого. –

+1

Возможно, вы захотите опубликовать весь свой код, включая создание динамической формы и сообщение, в другом вопросе, поскольку я не думаю, что это лучший способ добиться того, что вам нужно. Однако без подробностей это трудно сказать. –

-1

Это предупредит вас, что текст был выбран. изменить .text() для .val(), если вы хотите, чтобы подобрать значения параметров вместо

$("#PersonFunction").change(function() { 
    var selected = $("option:selected").text(); 
    alert(selected); 
}); 
Смежные вопросы