11

preventDefault() が Firefox で動作しないという質問が他にもあることに気付きましたが、役に立ちませんでした。

私は 3 つの 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>
4

3 に答える 3

1

nsListControlFrame::KeyPresshttp://mxr.mozilla.org/mozilla-central/source/layout/forms/nsListControlFrame.cppでは、デフォルトのアクションが防止されたかどうかをチェックしていないようです。バグを報告しますか?

于 2012-01-16T01:53:08.413 に答える
1

あなたの要件に応じて、デフォルトを防ぐための値を渡してみてください..それは以下のようなものになります..

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

それは私のために働いたplzはそれを試してみてください........

于 2012-12-11T13:01:38.647 に答える
0

ハンドラーから戻りfalseます。keydown

$('.myinput').keydown(function (evt) { onkeydown(evt); return false; });
于 2012-01-15T15:00:03.097 に答える