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.