2012-01-15 56 views
11

我知道還有其他關於preventDefault()的問題不適用於Firefox,但它們並沒有幫助我。preventDefault()不適用於Firefox 9.0.1中的SELECT元素

我有三個SELECT列表,我想要的是使用箭頭鍵在它們之間導航,而不更改任何值。該代碼在Chrome中運行良好,但是在Firefox中它會移動焦點,然後更改剛剛移動到的元素的值。

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

感謝編輯@Andrew Whitaker。下次我將確保自己包含代碼。 – Ace 2012-01-15 13:54:40

回答

0

返回false從​​處理程序:

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

感謝@techfoobar,但這似乎並未使其在Firefox上運行。 – Ace 2012-01-15 15:25:24

1

根據您的要求嘗試傳遞價值防止default..it會像下面..

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

它爲我工作PLZ嘗試.......

相關問題