Veuillez expliquer comment puis-je modifier la propriété d'option "sélectionnée"? Par exemple.:
<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>
Donc, si je change la valeur de la liste déroulante, rien n'est changé dans html-data. Pourquoi?
Ce n'est que si j'essaie de forcer le rechargement de la propriété à l'aide de jQuery que cela fonctionne.
$(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');
}
});
});
Pourquoi? Comment puis-je éviter ça? Est-il possible de changer "sélectionné" en utilisant du HTML pur?
EDIT Je veux notamment cette attrbute dans la balise html car j'ai besoin de sauvegarder et de restaurer la partie de ce code html à l'avenir.
Mis à jour, substitué .attr("selected", true)
à .prop("selected", true)
Remarque: la valeur de l'attribut selected
renvoie true
ou false
, pas "selected"
.
Essayez d'utiliser le sélecteur $("option[value=" + this.value + "]", this)
, définissez la propriété selected
sur true
, .siblings()
pour supprimer l'attribut selected
de option
non séléctionné
$(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>
Cela ne change pas le html
lui-même mais il change la valeur du 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>
Utilisez la méthode val()
. Donc dans votre cas, $("#lang_select").val('en');
sélectionne l'option anglaise. Et au fait, si vous voulez que la première option soit sélectionnée, vous n'avez pas besoin du selected="selected"
. Par défaut, la première option est automatiquement sélectionnée.