2011-10-20 4 views
-2

可能性の重複:
How do I replace a keystroke with jQuery?変更デフォルトのキーアクションのJavaScript

は、私はJavaScriptで押されたキーのデフォルトの文字を変更することができます方法はあります。誰かが "E"ボタンを押した場合と同様に、代わりにpを出力します。これはライブであり、テキストエリアに入力されるようです。とにかくjQueryなどでこれを行うには? Thnaks!

+0

@Bryan:この質問は、リンクの質問に非常に似ていますが、リンク1は何の真の解決策がありませんでした。この質問には簡単な解決策があります(私の答えは下記参照)。 –

答えて

2

はここthis回答に基づいて、作業溶液の完全な例です:

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'); 
     } 
    }); 
}); 
+0

ありがとうございます。しかし、TAは身体に付け加える必要がありますか、あるいは私は伝統的なセレクションを使用できますか? – comu

+0

@JonahAllibone:追加する必要はありません。それはデモだけだった。たとえば、 'var ta = $( '#ta');' –

+0

最近これをやろうとしましたが、うまくいきませんでした。何も起こりません。それは通常のことです – comu

1

キーボードショートカットを追加するためのフレームワークを確認してください。それは自動的に文字は、ページの一部は、例えば、テキストフィールドをフォーカスを持っているかを把握する必要があります別の文字と出力に任意のキー入力を変換し、そして、それはだ変更されることはありませんもちろん

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

あなたが実際に入力したいと思っている文字を何かと入力してください。

関連する問題