jquery - PreventDefault() 不适用于 Firefox 9.0.1 中的 SELECT 元素

标签 jquery events firefox event-handling preventdefault

我意识到还有其他关于 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>

最佳答案

http://mxr.mozilla.org/mozilla-central/source/layout/forms/nsListControlFrame.cpp 中的

nsListControlFrame::KeyPress似乎没有检查默认操作是否被阻止。提交错误?

关于jquery - PreventDefault() 不适用于 Firefox 9.0.1 中的 SELECT 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8870037/

相关文章:

c# - 向接口(interface)/实现添加事件

html - 页面在 Google Chrome 和 Internet Explorer 中显示正常,但所有内容在 Mozilla Firefox 中都被关闭

html - FF 3.5 与 3.0 中的 CSS "position:fixed"渲染

css - Inline-flex 在 Chrome 中无明显原因地增加了 block 宽度,我该如何解决这个问题?

events - grails 2.2.2 platform-core-plugin 在域模型中没有方法事件的签名

jquery - 用 CSS 挖空文本?

javascript - 根据容器的位置在滚动上绘制 svg

javascript - if else 条件在 jQuery 中不起作用

javascript - 如何防止 jQuery bootstrap ClockPicker 获取不能被 5 整除的分钟数

java - 在java中将键盘归属于按钮