2012-01-15 24 views
11

Tôi nhận thấy có các câu hỏi khác về preventDefault() không hoạt động với Firefox, nhưng chúng không giúp tôi.preventDefault() không hoạt động trên các phần tử SELECT trong Firefox 9.0.1

Tôi có ba danh sách SELECT và tất cả những gì tôi muốn là điều hướng giữa chúng bằng cách sử dụng các phím mũi tên mà không thay đổi bất kỳ giá trị. Mã hoạt động tốt trong Chrome, nhưng trong Firefox, nó di chuyển tiêu điểm và sau đó thay đổi giá trị trên phần tử vừa chuyển sang.

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

Cám ơn chỉnh sửa @Andrew Whitaker. Tôi sẽ đảm bảo đưa mã vào lần sau. – Ace

Trả lời

0

Return false từ handler keydown của bạn:

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

Cảm ơn @ techfoobar, nhưng điều đó dường như không làm cho nó hoạt động trên Firefox. – Ace

1

theo yêu cầu của bạn cố gắng đi qua giá trị cho ngăn chặn default..it sẽ giống như dưới đây ..

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

nó làm việc cho tôi plz thử nó .......

Các vấn đề liên quan