我意识到还有其他一些关于preventDefault()无法使用Firefox的问题,但是他们没有帮助我。
我有三个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 :(得分:1)
nsListControlFrame::KeyPress
似乎无法检查是否阻止了默认操作。提交错误?
答案 1 :(得分:1)
根据你的要求尝试传递值以防止默认..这将是类似下面..
evt.preventDefault ? evt.preventDefault() : evt.returnValue = false;
它对我有用plz试试.......
答案 2 :(得分:0)
从false
处理程序返回keydown
:
$('.myinput').keydown(function (evt) { onkeydown(evt); return false; });