2010-04-20 4 views
6

Qui di seguito sono le opzioni che ho nel mio codice HTML:Verificare se l'opzione selezionata di discesa non è il primo con JavaScript

<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> 

Voglio creare il codice JavaScript che controlla se l'utente seleziona un'opzione diversa da il primo.

Ecco cosa ho provato:

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

risposta

11

È possibile controllare come questo se nothing sta per essere il primo (di solito il caso nella mia esperienza):

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

Per ancora Confronta basata su il valore, fare questo:

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

È possibile eseguire il wand per modificare il markup in modo che l'etichetta i s accanto, in questo modo:

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

Altrimenti questa parte: .innerHTML = "Subject is Required!"; cancella la <select> :)

+1

Hai scritto 'document.getElementsByTagName ('subs')' dove intendi 'document.getElementById ('subs')' – RoToRa

+0

@RoToRa - Errore di copia Oops, grazie! e risolto. –

+0

Grazie, l'ho fatto, – Mahmoud

1

Questo dovrebbe farlo:

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......... 
} 
0

document.getElementsByTagName('option') dà una raccolta di tutti gli elementi della option documento e "nothing" è una stringa. Confrontare una collezione con una stringa è abbastanza inutile.

Anche l'impostazione document.getElementById("subn").innerHTML = "Subject is Required!"; eliminerà l'elemento select, quindi non troverà più nulla.

Se avete solo bisogno di sapere se è stato selezionato nulla controllare la proprietà selectedIndex dell'elemento select:

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

EDIT: Modificato > 0-<= 0. Suppongo che dovrebbe essere controllato se l'utente non ha selezionato nulla, anche.

+0

Il tuo 'if()' è indietro, se è '> 0' nulla è ** non ** selezionato, vuole il controllo inverso. –

+0

Bene, nel testo ha scritto "se l'utente seleziona un soggetto diverso dal primo", ma nel suo esempio ha cercato di verificare se il primo è stato selezionato, quindi c'è un po 'di contraddizione. – RoToRa

+0

Aggiunge un messaggio * se non hanno selezionato nulla *, è indietro. Questo è ** molto ** chiaro dal suo codice, non sono sicuro di dove sia la confusione ... –