Vérifiez si l'option sélectionnée de la liste déroulante n'est pas la première avec JavaScript

Voici les options que j'ai dans mon code HTML:

<label id="subn"> <select name="subs" id="subs"> <option value="nothing">Choose a Subject</option> <option value="General Question">General Question</option> <option value="MemberShip Area">MemberShip Area</option> <option value="Others">Others</option> </select> </label> 

Je veux créer un code JavaScript qui vérifiera si l'utilisateur a sélectionné une option autre que la première.

Voici ce que j'ai essayé:

 if (document.getElementsByTagName('option') == "nothing"){ document.getElementById("subn").innerHTML = "Subject is Required!"; document.getElementById("subs").focus(); return false; } 

Vous pouvez vérifier comme ça si nothing va être le premier (généralement le cas dans mon expérience):

 if (document.getElementById('subs').selectedIndex == 0){ 

Pour toujours comparer en fonction de la valeur, procédez comme suit:

 var sel = document.getElementById('subs'); if (sel.options[sel.selectedIndex].value == 'nothing') { 

Vous pouvez modifier votre balisage pour que l'étiquette soit à côté, comme ceci:

 <select name="subs" id="subs"></select><label id="subn" for="subs"></label> 

Sinon, cette partie: .innerHTML = "Subject is Required!"; Effacez votre <select> 🙂

Cela devrait le faire:

 var index = document.your_form_name.subs.selectedIndex; var value = document.your_form_name.subs.options[index].value; if (value === "nothing"){ // your further code here......... } 

document.getElementsByTagName('option') donne une collection de tous les éléments d' option dans le document et "nothing" est une chaîne. La comparaison d'une collection à une chaîne est tout à fait inutile.

Également configurer document.getElementById("subn").innerHTML = "Subject is Required!"; Supprimera l'élément de select , de sorte que document.getElementById("subs") ne trouverait plus rien.

Si vous avez juste besoin de savoir si quelque chose est sélectionné, vérifiez la propriété selectedIndex de l'élément select :

 if (document.getElementById("subs").selectedIndex <= 0) { // nothing is selected } 

EDIT: Changé > 0 à <= 0 . Je suppose qu'il faut vérifier si l'utilisateur n'a pas non plus sélectionné d'autre chose.