2012-01-15 5 views
11

Zdaję sobie sprawę, że są inne pytania dotyczące preventDefault() nie działa z Firefox, ale mi nie pomógł.preventDefault() nie działa na elementach SELECT w Firefoksie 9.0.1

Mam trzy listy SELECT, a wszystko, czego chcę, to nawigacja między nimi za pomocą klawiszy strzałek bez zmiany żadnych wartości. Kod działa świetnie w Chrome, ale w Firefoksie porusza fokus, a następnie zmienia wartość elementu, do którego właśnie został przeniesiony.

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

Dzięki za edycja @Andrew Whitaker. Postaram się dołączyć kod następnym razem. – Ace

Odpowiedz

0

Powrót false z obsługi keydown:

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

Dzięki @techfoobar, ale to nie działa w przeglądarce Firefox. – Ace

1

zależności od zapotrzebowania spróbować przechodzącej wartość zapobiec default..it będzie coś jak poniżej ..

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

pracował dla mnie plz spróbować .......