JavaScript: Seleccione onChange de menú desplegable y eventos clave

  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de Usuario
  • Registrado: Nov 18, 2007
  • Mensajes: 429
  • Status: Offline

Nota Octubre 7th, 2011, 3:54 pm

He añadido una función javascript pequeños a mi sitio que tiene la palabra en un controlador de onChange en una lista desplegable de <select>.

Código: [ Select ]
function dropdown_change(id){
             for (i = 0; i < document.form1.elements.length; i++) {
                    if (document.form1.elements[i].tabIndex == id.tabIndex+1) {
                    document.form1.elements[i].focus();
                    }
            }
}

<form name='form1'><select tabindex="1" name="salutation" id="sal" onchange="dropdown_change(this);"><option....

<input type="text" name="nextfield" tabindex="2">
  1. function dropdown_change(id){
  2.              for (i = 0; i < document.form1.elements.length; i++) {
  3.                     if (document.form1.elements[i].tabIndex == id.tabIndex+1) {
  4.                     document.form1.elements[i].focus();
  5.                     }
  6.             }
  7. }
  8. <form name='form1'><select tabindex="1" name="salutation" id="sal" onchange="dropdown_change(this);"><option....
  9. <input type="text" name="nextfield" tabindex="2">


Como mis tabindexes son precisos y completar los incendios función correctamente y cuando se cambia el saludo a través de ratón el foco saltará a la siguiente tabindex. Mi problema es con IE. Ive encontró que debido a un fallo que IE dispara onchange cuando un evento de botón se activará. En Chrome funciona como debería. Lo necesito para...si el usuario utiliza el mouse y selecciona y el tema que salta al siguiente elemento más si el usuario decide utilizar los botones de teclado arriba y abajo (códigos de 38 y 40) que pueden cambiar la lista desplegable Seleccionar con ellos. Ive intentó envolver la totalidad de bucle en un IF y ELSE instrucción que tal vez dice:

Código: [ Select ]

function(){

if keyCodePressed == 40 or 38
do nothing
else
run the for loop, get next tabID and set focus.

}
  1. function(){
  2. if keyCodePressed == 40 or 38
  3. do nothing
  4. else
  5. run the for loop, get next tabID and set focus.
  6. }



Gracias por cualquier ayuda me mostrando cómo combinar los dos eventos.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Octubre 7th, 2011, 3:54 pm

Publicar Información

  • Total de mensajes en este tema: 1 mensaje
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 302 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC