5

入力ボックスに、上キー「↑」を入力したときにカーソルの伝播を停止したい:

前 :

tes|t// カーソルはtの前にあります

後 :

|test// カーソルが始まりました

カーソルが動かないようにしたいので、tの前に留まる必要があります。

これまでのところ、私はこれを試していますが、うまくいきません:

$('input').keyup(function(e) {

    if (e.which == 40) { // up key
        e.stopPropagation();
        e.stopImmediatePropagation();
        e.preventDefault();

        // actions

        return false;
    }

}

とにかくこれは可能ですか?

4

1 に答える 1

8

そのために使用できますkeydown

$('input').keydown(function(e) {
    if (e.which == 40) { // up key
        return false;
    }
}

keyupkeypressイベントが処理された後に発生し、keypress印刷できない文字に対しては発生しないはずです (ただし、ブラウザーによって多少の不一致があります)。そのため、イベントのデフォルト アクションをすぐに防止することkeydownが最善の方法です。

デフォルトのアクションを防止する正当な理由がない場合 (たとえば、検索フィールドにフォーカスがあるときにオートコンプリート リストを参照するなど)、@Kolink のコメントによると、他のユーザーのユーザビリティに影響を与える可能性があることに注意してください。

于 2013-03-29T22:43:04.907 に答える