web-dev-qa-db-fra.com

Comment attribuer une valeur vide à la liste déroulante?

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?

5
ove

Régler selectedIndex à -1 efface la sélection.

document.getElementById('dropdownid').selectedIndex = -1;
8
Tetaxa

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>

http://jsfiddle.net/kxoytdg8/

2
Moob

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("");
0
Andy

le meilleur moyen est d’utiliser $("#dropdownid").html(''); pour que la valeur soit nulle.

0
aafaq ahmad

Avez-vous essayé de désélectionner les options dans la sélection?

$("#dropdownid option").prop("selected", false);

0
Sumit

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.

0
eon