2015-08-30 13 views
10

Proszę wyjaśnić, w jaki sposób mogę zmienić "wybraną" właściwość opcji? Np .:Opcja zaznaczenia nie jest aktualizowana "wybrana" właściwość na stronie HTML

<select id="lang_select"> 
    <option value="en" selected="selected">english</option> 
    <option value="ar">العربية</option> 
    <option value="az">azərbaycanlı</option> 
    <option value="bg">български</option> 
    <option value="ca">català</option> 
    <option value="cs">český</option> 
    <!-- some data cut --> 
</select> 

Więc jeśli zmienić wartość rozwijanych list nic się nie zmieniło w HTML-danych. Dlaczego?

Tylko jeśli spróbuję ponownie załadować właściwość za pomocą jQuery, działa.

$(document).on('change',"select",function(){ 
    var i = $(this)[0].selectedIndex; 
    var ch = $(this).children().each(function(index){ 
     $(this).prop('selected',index == i); 
     if (index == i) { 
      $(this).attr('selected','selected'); 
     } else { 
      $(this).removeAttr('selected'); 
     } 
    }); 
}); 

Dlaczego? Jak mogę tego uniknąć? Czy można zmienić "wybrane" używając czystego html?

EDIT ja mianowicie chce to attrbute w znaczniku html, bo trzeba oszczędzać i przywrócić część tego HTML-kodu w przyszłości.

Odpowiedz

12

zaktualizowany, podstawiony .attr("selected", true) dla .prop("selected", true)

Uwaga, wartość atrybutu selected zwraca true lub false, a nie "selected".

Spróbuj wykorzystując selektor $("option[value=" + this.value + "]", this) ustaw właściwość selected do true, .siblings() usunąć atrybut selected z option nie wybrano

$(document).on("change","select",function(){ 
 
    $("option[value=" + this.value + "]", this) 
 
    .attr("selected", true).siblings() 
 
    .removeAttr("selected") 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select id="lang_select"> 
 
<option value="en" selected="true">english</option> 
 
<option value="ar">العربية</option> 
 
<option value="az">azərbaycanlı</option> 
 
<option value="bg">български</option> 
 
<option value="ca">català</option> 
 
<option value="cs">český</option> 
 
<!-- some data cut --> 
 

 
</select>

+0

Ten kod nie dodaje "wybranego" atrybutu znacznika. Ale możliwe jest zmodyfikowanie tego kodu w celu uzyskania poprawnego wyniku. Jak poprawnie dodać "wybrane" attribut e w jednym wierszu? $ (this) .attr ("selected", "selected"); - ten kod. – Vyacheslav

+0

@trololo Zobacz zaktualizowany post – guest271314

0

Użyj metody val(). Tak więc w twoim przypadku, $("#lang_select").val('en'); wybiera opcję angielską. A tak przy okazji, jeśli chcesz wybrać pierwszą opcję, nie potrzebujesz selected="selected". Domyślnie pierwsza opcja jest automatycznie wybierana.

+0

pisałem ja mianowicie potrzebujemy tego atrybutu HTML. – Vyacheslav

1

To nie zmieni html się jednak Doe zmienić wartość select

$('select').change(function(){ 
 
    $('#result').html($(this).val()); 
 
}).trigger('change');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="lang_select"> 
 
    <option value="en" selected="selected">english</option> 
 
    <option value="ar">العربية</option> 
 
    <option value="az">azərbaycanlı</option> 
 
    <option value="bg">български</option> 
 
    <option value="ca">català</option> 
 
    <option value="cs">český</option> 
 
    <!-- some data cut --> 
 
</select> 
 
<hr /> 
 
<div id="result"></div>

+0

Zaktualizowałem moje pytanie. Potrzebuję "wybranego" atrybutu, aby zapisać i przywrócić tę część kodu html. – Vyacheslav

+0

Gdzie zapisujesz html? Nie zapisałeś wartości i ustawiłeś ją później? –

+0

Na serwerze. Wysyłam kod html z aktualną stroną, aby zapisać bieżącą pracę użytkownika. Tak więc, gdy użytkownik pobierze później swoją pracę, należy wybrać "wybraną opcję". – Vyacheslav

Powiązane problemy