4


1

jQueryでキーコンボをトリガーする方法

私はいくつかのものをコーディングしました:

css( "zoom")でズームインしますが、CTRL +またはCTRL-をシミュレートするボタンが必要です-

このコードは私のために機能していません:

e = jQuery.Event("keydown");
e.which = 50;
$("input").trigger(e);

助けてください!

EDIT

実際には、入力フィールドだけでなく、Webページ全体をズームインおよびズームアウトしたかったのです。

2 Answer


9


jQueryは、 event`オブジェクトに1つ以上のプロパティを設定することにより、イベントの修飾キーを正規化します。 したがって、http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-MouseEvent-ctrlKey [`event.ctrlKey]を`に設定します。 true`、これはあなたのために働くはずです:

e = jQuery.Event("keydown");
e.which = 50;
e.ctrlKey = true;
$("input").trigger(e);

ただし、ソースのコメントに従って(以下にリンク):

_ イベントオブジェクトの値を簡単に変更することはできません(おそらくセキュリティ上の理由から)。 _

ですから、 Event`オブジェクトを作成した後にイベントのプロパティを設定できない場合、 $ .extend() ctrlKey`プロパティを設定できます:

e = jQuery.Event("keydown");
fake = $.extend({}, e, {which: 50, ctrlKey: true});
$("input").trigger(fake);

'' '' '

もう1つ:[.kbd]#+#キーまたは[.kbd]#-#キーにキーコード「50」を使用しようとしているかどうかわかりません。 おそらく、あなたは別のキーボードレイアウトを使用していますが、http://api.jquery.com/keydown/#target [このデモ]によると、 `50`は[.kbd]を押すためのJavaScriptキーコードです#2#-それもあなたの問題の一部である可能性があります。

'' '' '

出典:http://api.jquery.com/keydown/#comment-72949775[jQuery APIページのコメント]。

'' '' '

編集:

それ以外は、キーボードコマンドを "送信"している場合でも、JavaScriptを使用して実際にブラウザのズームレベルを変更できるとは思いません。


1


ソース:http://www.scottklarr.com/topic/126/how-to-create-ctrl-key-shortcuts-in-javascript/

var isCtrl = false;

$(document).keyup(function (e) {
    if(e.which == 17) isCtrl=false;
}).keydown(function (e) {
    if(e.which == 17) isCtrl=true;
    if(e.which == 83 && isCtrl == true) {
        //run code for CTRL+S -- ie, save!
        return false;
    }
});

これはCtrl + s用ですが、簡単に変更できるはずです。