-2

重複の可能性:
キーストロークをjQueryに置き換えるにはどうすればよいですか?

JavaScriptで押されたキーのデフォルト文字を変更する方法はありますか?誰かが「E」ボタンを押すと、代わりにapが出力され、これはライブであるため、テキストエリアに入力されているようになります。とにかく、jQueryまたはそのようなものでこれを行うには?Thnaks!

4

2 に答える 2

2

これは、この回答に基づいた、実用的なソリューションの完全な例です。

jQuery.fn.extend({
    insertAtCaret: function(myValue) {
        return this.each(function(i) {
            if (document.selection) {
                //For browsers like Internet Explorer
                this.focus();
                sel = document.selection.createRange();
                sel.text = myValue;
                this.focus();
            }
            else if (this.selectionStart || this.selectionStart == '0') {
                //For browsers like Firefox and Webkit based
                var startPos = this.selectionStart;
                var endPos = this.selectionEnd;
                var scrollTop = this.scrollTop;
                this.value = this.value.substring(0, startPos) + myValue + this.value.substring(endPos, this.value.length);
                this.focus();
                this.selectionStart = startPos + myValue.length;
                this.selectionEnd = startPos + myValue.length;
                this.scrollTop = scrollTop;
            } else {
                this.value += myValue;
                this.focus();
            }
        })
    }
});

$(function() {
    var ta = $('<textarea id="ta" style="width: 400px; height: 200px;"></textarea>').appendTo('body');
    ta.keypress(function(e) {
        if (e.which == 101) // e
        {
            e.preventDefault();
            ta.insertAtCaret('P');
        }
    });
});
于 2011-10-20T23:38:33.200 に答える
1

キーボードショートカットを追加するには、このフレームワークを確認してください。

http://www.openjs.com/scripts/events/keyboard_shortcuts/

もちろん、キーを押すと自動的に別の文字に変換されてその文字が出力されることはありません。テキストフィールドなど、ページのどの部分にフォーカスがあるかを把握し、実際に必要な文字で値を変更する必要があります。入力されます。

于 2011-10-20T22:34:52.407 に答える