2009-11-05 8 views
69

でのjQueryを入力し、カーソルがTEXTAREACtrlキー内にあるとき、私は何かをトリガー + を入力するにはどうすればよいが押されて? jQueryを使用してください。ありがとうはCtrl + TEXTAREA

+0

ご回答はお受けできません。 – peter

答えて

101

あなたはCtrlキーキーが押された場合、このような何か見にevent.ctrlKeyフラグを使用することができます。

$('#textareaId').keydown(function (e) { 

    if (e.ctrlKey && e.keyCode == 13) { 
    // Ctrl-Enter pressed 
    } 
}); 

上記のスニペットhereを確認してください。

+11

これはGoogle Chromeでは機能しません。 Ctrl + Enterを押すと、キーコードは「13」ではなく「10」になります。 – Znarkus

+30

これは動作しません。下のYarolslav Yakovlevのソリューションは適切に動作します。人の時間を節約するために受け入れられた答えを変更してください。 –

+0

Operaでも動作しません。 –

0

Ctrlが押されたときに最初にフラグを設定する必要があります。このonkeydownを実行してください。あなたはenterのkeydownをチェックしなければなりません。 Ctrlのキーアップが表示されたらフラグを解除します。

0
$('my_text_area').focus(function{ set_focus_flag }); 

//ctrl on key down set flag 

//enter on key down = check focus flag, check ctrl flag 
117

実際にこの1つはトリックを行い、すべてのブラウザで動作します:js fiddle

+0

Firefox 27でフィドルが動作しない、何が問題なの? – CoDEmanX

+0

ちょうどadd 'event':' if((event.keyCode == 10 || event.keyCode == 13)&& event.ctrlKey) ' – terales

+2

@Yaroslav:「event.keyCode」の使い方を教えてください== 10 "と答える。 –

4

if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey) 

リンク私が不完全であるか、ないクロスブラウザの互換性のいずれか他の人の答えを見つけました。

このコードはGoogle Chromeに対応しています。

$(function() 
{ 
    $(document).on("keydown", "#textareaId", function(e) 
    { 
     if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey) 
     { 
      alert('ctrl+enter'); 
     } 
    }); 
}); 
+1

詳しい説明を追加して回答を改善することを検討できますか?ありがとう:)それ以外の場合は、低品質の質問に対する低品質の回答に過ぎません。 – Theolodis

+0

@Valamas:「event.keyCode == 10」の使用方法を教えてください。 –

+0

私はコピー&ペーストの答えが好きです – xamde

2

これは中ような可撓性単純しかし、jQueryプラグインに拡張することができる:ユーザが有するCTRLは、入力押したときにフォームを提出しなければならないこのよう

$.fn.enterKey = function (fnc, mod) { 
    return this.each(function() { 
     $(this).keypress(function (ev) { 
      var keycode = (ev.keyCode ? ev.keyCode : ev.which); 
      if ((keycode == '13' || keycode == '10') && (!mod || ev[mod + 'Key'])) { 
       fnc.call(this, ev); 
      } 
     }) 
    }) 
} 

$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl') 

そのフォームのテキストエリアに注目してください。

https://stackoverflow.com/a/9964945/1017546のおかげで)

27

ユニバーサルソリューション

は、同様にOS Xをサポートします。

if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) { 
    // do something 
} 
+9

この回答は無視されません。なぜなら、スコアが低くなっているからです。それは単なる新しい回答です。 –

0

ゲームに少し遅れたかもしれませんが、ここでは私が使用しているものがあります。また、カーソルの現在のターゲットであるフォームを強制的にサブミットします。

$(document.body).keypress(function (e) { 
    var $el = $(e.target); 
    if (e.ctrlKey && e.keyCode == 10) { 
     $el.parents('form').submit(); 
    } else if (e.ctrlKey && e.keyCode == 13) { 
     $el.parents('form').submit(); 
    } 
});