2012-01-15 17 views
11

Me doy cuenta de que hay otras preguntas en prevenirDefault() que no funcionan con Firefox, pero no me ayudaron.preventDefault() no funciona en elementos SELECCIONAR en Firefox 9.0.1

Tengo tres listas SELECT, y todo lo que quiero es navegar entre ellas con las teclas de flecha sin cambiar ninguno de los valores. El código funciona muy bien en Chrome, pero en Firefox mueve el foco y luego cambia el valor del elemento al que se acaba de mover.

http://jsbin.com/ofitif/3/edit

JavaScript:

$(document).ready(function() { 
    $('.myinput').keydown(function (evt) { onkeydown(evt); }); 
    $('.myinput:first').focus(); 
}); 

function onkeydown(evt) { 
    evt.preventDefault(); 
    console.log(evt.which); 
    if(evt.which == 39) { 
    $(document.activeElement).next().focus(); 
    } 
    else if(evt.which == 37) { 
    $(document.activeElement).prev().focus(); 
    }    
} 

HTML:

<div id="inputs"> 
    <select class="myinput"> 
     <option value="1">One</option> 
     <option value="2">Two</option> 
     <option value="3">Three</option> 
    </select> 
    <select class="myinput"> 
     <option value="1">One</option> 
     <option value="2">Two</option> 
     <option value="3">Three</option> 
    </select> 
    <select class="myinput"> 
     <option value="1">One</option> 
     <option value="2">Two</option> 
     <option value="3">Three</option> 
    </select> 
</div> 
+0

Gracias por la edición @Andrew Whitaker. Me aseguraré de incluir el código la próxima vez. – Ace

Respuesta

0

Volver false de su manejador keydown:

$('.myinput').keydown(function (evt) { onkeydown(evt); return false; }); 
+0

Gracias @techfoobar, pero eso no parece hacer que funcione en Firefox. – Ace

1

acuerdo a sus necesidades intentan pasar valor para prevenir default..it será algo así como más adelante ..

evt.preventDefault ? evt.preventDefault() : evt.returnValue = false; 

que trabajó para mí PLZ probarlo .......