29 votos

HTML SELECT - activación de JavaScript evento ONCHANGE incluso cuando la opción no está cambiado

Tengo el siguiente código:

<select onchange="jsFunction()">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

Cuando un usuario saca el cuadro combinado desplegable y selecciona la opción misma que fue previamente seleccionado, no es un onchange evento. Así, el jsFunction() no es llamado. Pero yo quiero la jsFunction() llamado incluso en este caso.

44voto

Simon Aronsson Puntos 753

Yo lo haría así:

<select onchange="jsFunction()">
  <option value="" disabled selected style="display:none;">Label</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>

Si usted desea que usted podría tener la misma etiqueta como la primera opción, que en este caso es 1. Aún mejor: poner una etiqueta en la que hay para las opciones en el cuadro.

18voto

Usted tiene que añadir vacía opción para resolverlo,

También me puede dar una solución, pero hasta que eso está bien para usted o no, puesto que el Usuario seleccione la opción predeterminada después de seleccionar otras opciones de jsFunction será llamado dos veces.

<select onChange="jsFunction()" id="selectOpt">
    <option value="1" onclick="jsFunction()">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

function jsFunction(){
  var myselect = document.getElementById("selectOpt");
  alert(myselect.options[myselect.selectedIndex].value);
}

3voto

RecoJohnson Puntos 300

Esto funciona:

<select name="type" onmousedown="this.value='';" onchange="alert('Changed.');">
  <option value='1'>One</option>
  <option value='2'>Two</option>
  <option value='3'>Three</option>
  <option value='4'>Four</option>
  <option value='5'>Five</option>
  <option value='6'>Six</option>
  <option value='7'>Seven</option>
  <option value='8'>Eight</option>
  <option value='9'>Nine</option>
  <option value='10'>Ten</option> 
</select>

0voto

Strelok Puntos 18453

No disparar porque el valor no ha "cambiado". Es el mismo valor. Desafortunadamente, usted no puede alcanzar el comportamiento deseado utilizando el change evento.

Usted puede manejar la blur evento y hacer todo el procesamiento que necesita cuando el usuario abandona el cuadro de selección. De esa manera usted puede ejecutar el código que necesita, incluso si el usuario selecciona el mismo valor.

-1voto

Praveen Singh Puntos 153

Tratar como este. Sólo tiene que añadir un vacío opción. Esto va a resolver su problema.

<select onchange="jsFunction()">
     <option ></option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>​

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X