2012-01-15 1 views
11

Firefox에서 작동하지 않는 preventDefault()에 대한 다른 질문이 있지만 도움이되지 않습니다.Firefox 9.0.1의 SELECT 요소에서 preventDefault()가 작동하지 않습니다.

세 가지 SELECT 목록이 있는데 원하는 값을 변경하지 않고 화살표 키를 사용하여 두 항목 사이를 탐색하면됩니다.. 코드는 Chrome에서 잘 작동하지만 Firefox에서는 포커스를 이동 한 다음 방금 이동 한 요소의 값을 변경합니다.

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

자바 스크립트 :

$(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

감사합니다 .. 값을 전달하려고 @Andrew Whitaker 편집. 나는 다음 번에 코드를 직접 포함시킬 것입니다. – Ace

답변

0

당신의 keydown 핸들러에서 복귀 false :

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

감사합니다 @techfoobar,하지만 그건 Firefox에서 작동하지 않는 것 같습니다. – Ace

1

는 귀하의 요구 사항에 따라 대한

evt.preventDefault ? evt.preventDefault() : evt.returnValue = false; 
이 나를 위해 일

PLZ 그것을 시도

.......