2010-04-20 10 views
6

A continuación se presentan las opciones que tengo en mi código HTML:Comprobar si la opción seleccionada del menú desplegable no es el primero 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> 

Quiero crear un código JavaScript que comprobar si el usuario ha seleccionado una opción distinta el primero.

Aquí es lo que he intentado:

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

Respuesta

11

Usted puede comprobar así si nothing va a ser primero (suele ser el caso en mi experiencia):

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

Para Todavía comparar basan en el valor, haga esto:

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

Puede cambiar su marca para que la etiqueta i s al lado, así:

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

De lo contrario esta parte: .innerHTML = "Subject is Required!";, se borrará la <select> :)

+1

Has escrito 'document.getElementsByTagName ('subs')' donde quieres decir 'document.getElementById ('subs')' – RoToRa

+0

@RoToRa - ¡Vaya, copia el error, gracias! y arreglado. –

+0

Gracias que lo hizo, – Mahmoud

1

Esto debe hacerlo:

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') da una colección de todos los elementos en el option documento y "nothing" es una cadena. Comparar una colección con una cadena es bastante inútil.

También la configuración document.getElementById("subn").innerHTML = "Subject is Required!"; eliminará el elemento select, por lo que document.getElementById("subs") no encontrará nada más.

Si sólo necesita saber si se ha seleccionado nada comprobar la propiedad del elemento selectedIndexselect:

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

EDIT: Cambiado > 0 a <= 0. Supongo que debería verificarse si el usuario no seleccionó nada.

+0

Su 'if()' está al revés, si es '> 0' nada está ** no ** seleccionado, quiere la verificación inversa. –

+0

Bueno, en el texto escribió "si el usuario selecciona un tema que no sea el primero", pero en su ejemplo trató de verificar si se seleccionó el primero, por lo que hay un poco de contradicción. – RoToRa

+0

Está agregando un mensaje * si no seleccionaron nada *, está al revés. Esto es ** muy ** claro de su código, no estoy seguro de dónde está la confusión ... –

Cuestiones relacionadas