Cela fonctionne avec Google Chrome et IE mais pas Firefox. Dans certains cas, Chrome et IE permettent d'attribuer une valeur vide, même si elle ne fait pas partie de la sélection déroulante.
document.getElementById('dropdownid').value = "";
Notez que j'ai accès à jQuery mais ne fait pas ce que je voulais.
$("#dropdownid").val("");
JQuery ci-dessus ne lui attribue pas une valeur vide, car ce dernier ne fait pas partie des options de la liste déroulante. Je dois attribuer "" à la liste déroulante sélectionnée en raison de problèmes de code hérités de tiers.
Une idée?
Régler selectedIndex
à -1 efface la sélection.
document.getElementById('dropdownid').selectedIndex = -1;
Changez simplement la selectedIndex
. PAR EXEMPLE:
$(function(){
$dropdown = $("#dropdownid");
alert($dropdown.val()); //alerts "2"
$dropdown[0].selectedIndex = -1; //or document.getElementById('dropdownid').selectedIndex = -1;
alert($dropdown.val()) //alerts null
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="dropdownid">
<option value="1">1</option>
<option value="2" selected="selected">2</option>
<option value="3">3</option>
</select>
Ne pourriez-vous pas ajouter une option vide à la sélection avant de la définir?
var jqDropdown = $('#dropdownid');
if (!jqDropdown.find('option[value=""]').length) {
jqDropdown.prepend($('<option value=""></option>'));
}
jqDropdown.val("");
le meilleur moyen est d’utiliser $("#dropdownid").html('');
pour que la valeur soit nulle.
Avez-vous essayé de désélectionner les options dans la sélection?
$("#dropdownid option").prop("selected", false);
2018 jQuery 3.2.1 answer
Si vous chaînez des méthodes sur un sélecteur jQuery, $('#selectId').slideUp(600)[0].selectedIndex = -1
semble fonctionner (du moins sous Chrome), mais dérange ma préférence "s'en tenir à une syntaxe/structure".
Cela fonctionne aussi: $('#selectId').slideUp(600).find('option[selected]').attr('selected', false);
C'est un peu plus long, mais choisissez la saveur que vous préférez.