JQuery Event Keypress: hansı düyməyə basılır?

JQuery ilə, əsas mətbuat hadisə ilə əlaqəli olduğumda hansı düyməni basdığını necə bilirəm?

 $('#searchbox input').bind('keypress', function(e) {}); 

ENTER düyməsinə basdığımda təqdim etməyə çağırıram .

[Update]

Mən özümü tapdım (və ya daha yaxşıdır: bir) cavab dəyişiklik üçün yer var görünür;)

keyCode fərq varmı? - xüsusən də yalnız Unicode xarakterli olmayacaq ENTER düyməsini axtarıramsa?

Bəzi brauzerlərdə bir əmlak və bir başqası varmı?

662
19 нояб. BlaM 19 Nov tərəfindən təyin olundu . 2008-11-19 17:59 '08 at 5:59 pm 2008-11-19 17:59
@ 23 cavab

Əslində daha yaxşıdır:

  var code = e.keyCode || e.which; if(code == 13) { //Enter keycode //Do something } 
794
19 нояб. cavab 19 noyabr Eran Galperin tərəfindən verilir 2008-11-19 18:07 '08 at 18:07 'da 2008-11-19 18:07

Bunu sınayın

border=0
 $('#searchbox input').bind('keypress', function(e) { if(e.keyCode==13){ // Enter pressed... do anything here... } }); 
126
19 нояб. Cavab Vladimir Prudnikov tərəfindən 19 noyabrda verilir 2008-11-19 18:05 '08 saat 06:05 'da 2008-11-19 18:05

JQuery UI istifadə etsəniz, ümumi kodlar üçün tərcümələriniz var. Ui / ui / ui.core.js saytında :

 $.ui.keyCode = { ... ENTER: 13, ... }; 

Testlərdə / simulyasiya / jquery.simulate.js-də bəzi tərcümələr də var, amma əsas JS kitabxanasında tapa bilmirdim. Yadda saxlayın ki, yanğın mənbələrinə tutuldum. Bəlkə də bu sehrli nömrələrdən xilas olmanın başqa bir yolu var.

String.charCodeAt və .fromCharCode istifadə edə bilərsiniz:

 >>> String.charCodeAt('\r') == 13 true >>> String.fromCharCode(13) == '\r' true 
59
19 нояб. istifadəçi tərəfindən verilmiş cavab 19 noyabr 19 2008-11-19 19:22 '08 saat 19:22 'da 2008-11-19 19:22

Siz jQuery istifadə etdiyiniz nəzərə alaraq, tamamilə istifadə etməlisiniz. Bəli, müxtəlif brauzerlər müxtəlif xüsusiyyətləri təyin edirlər, lakin jQuery onları normalləşdirir və hər bir halda bu dəyəri təyin edəcək. Http://api.jquery.com/keydown/ ünvanında olan sənədlərə baxın:

Hansı düyməni basıldığını müəyyən etmək üçün, işlənən funksiyaya ötürülən hadisə obyektini yoxlaya bilərik. Brauzerlər bu məlumatı saxlamaq üçün müxtəlif xüsusiyyətlərdən istifadə etsələr də, jQuery bu əmlakı normallaşdırır, belə ki, biz əsas kodu almaq üçün etibarlı şəkildə istifadə edə bilərik.

38
05 марта '10 в 20:47 2010-03-05 20:47 cavab Frank Schwieterman tərəfindən 05.03.2010 tarixində 20:47 'də verildi

... bu nümunə şəklinin göndərilməsini maneə törədir (əsas vuruşu # 13 tutarkən mütəmadi əsas niyyət):

 $('input#search').keypress(function(e) { if (e.which == '13') { e.preventDefault(); doSomethingWith(this.value); } }); 
30
13 мая '10 в 1:58 2010-05-13 01:58 cavab 13 may 2010- cu il saat 13 : 00 -da istifadəçi tərəfindən verilir
  // in jquery source code... if (!event.which  ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode)) { event.which = event.charCode || event.keyCode; } // So you have just to use $('#searchbox input').bind('keypress', function(e) { if (e.which === 13) { alert('ENTER WAS PRESSED'); } }); 
26
07 мая '10 в 18:35 2010-05-07 18:35 Cavab Luca Filosofi tərəfindən mayın 07-də ​​saat 18: 35-də verilmişdir 2010-05-07 18:35

redaktə: Bu yalnız IE üçün işləyir ...

Anladım ki, bu, köhnə bir nəşrdir, ancaq birisi bunu faydalı hesab edə bilər.

Əsas hadisələr göstərilir, belə ki, əsas kod dəyərindən istifadə etmək əvəzinə daha çox oxunaqlı olmaq üçün əsas dəyərdən istifadə edə bilərsiniz.

 $(document).ready( function() { $('#searchbox input').keydown(function(e) { setTimeout(function () { //rather than using keyup, you can use keydown to capture //the input as it being typed. //You may need to use a timeout in order to allow the input to be updated }, 5); }); if(e.key == "Enter") { //Enter key was pressed, do stuff }else if(e.key == "Spacebar") { //Spacebar was pressed, do stuff } }); 

İşdə məndən aldığım eşlenen düymələri ilə bir köləlik siyahısı var 2019

24
08 янв. Jan 08-də Kevin tərəfindən cavablandı 2013-01-08 04:27 '13 at 4:27 2013-01-08 04:27

Klaviatura qısayollarını dəstəkləyən əla jquery.hotkeys plugin-

 $(document).bind('keydown', 'ctrl+c', fn); 
20
20 июля '10 в 22:21 2010-07-20 22:21 cavab 20 iyul 2010 - cu il saat 10: 00-da istifadəçi397198 tərəfindən verilmişdir 2010-07-20 22:21
 $(document).ready(function(){ $("#btnSubmit").bind("click",function(){$('#'+'<%=btnUpload.ClientID %>').trigger("click");return false;}); $("body, input, textarea").keypress(function(e){ if(e.which==13) $("#btnSubmit").click(); }); }); 

Bu sizə kömək edir ümid!

14
17 февр. Cavab verilir rajakvk 17 fevral. 2009-02-17 14:18 '09 at 14:18 'da 2009-02-17 14:18

Yaxşı, mən qar oldum:

 e.which 

ASCII əsas kodunu ehtiva edir.

Https://developer.mozilla.org/En/DOM/Event.which ünvanına baxın

6
19 нояб. Cavab BlaM 19 noyabrda verilir. 2008-11-19 18:01 '08 at 18:01 2008-11-19 18:01

Burada http://unixpapa.com/js/key.html müxtəlif brauzerlərin davranışının ətraflı təsviri

6
05 марта '10 в 20:41 2010-03-05 20:41 Phil 05 mart 'da saat 20: 41-də cavab verdi. 2010-03-05 20:41

Yalnız bu xətt ilə həll kodunu əlavə edəcəyəm e.preventDefault(); . Bir forma alanına daxil olursanız, göndərdiyiniz zaman təqdim olunmayacaq

 var code = (e.keyCode ? e.keyCode : e.which); if(code == 13) { //Enter keycode e.preventDefault(); //Do something } 
5
10 февр. Cavab dzona verildi 10 fevral. 2012-02-10 22:59 '12 at 22:59 pm 2012-02-10 22:59

Bu olduqca çox keyCodes tam siyahısı:

 3: "break", 8: "backspace / delete", 9: "tab", 12: 'clear', 13: "enter", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause/break", 20: "caps lock", 27: "escape", 28: "conversion", 29: "non-conversion", 32: "spacebar", 33: "page up", 34: "page down", 35: "end", 36: "home ", 37: "left arrow ", 38: "up arrow ", 39: "right arrow", 40: "down arrow ", 41: "select", 42: "print", 43: "execute", 44: "Print Screen", 45: "insert ", 46: "delete", 48: "0", 49: "1", 50: "2", 51: "3", 52: "4", 53: "5", 54: "6", 55: "7", 56: "8", 57: "9", 58: ":", 59: "semicolon (firefox), equals", 60: "<", 61: "equals (firefox)", 63: "ß", 64: "@ (firefox)", 65: "a", 66: "b", 67: "c", 68: "d", 69: "e", 70: "f", 71: "g", 72: "h", 73: "i", 74: "j", 75: "k", 76: "l", 77: "m", 78: "n", 79: "o", 80: "p", 81: "q", 82: "r", 83: "s", 84: "t", 85: "u", 86: "v", 87: "w", 88: "x", 89: "y", 90: "z", 91: "Windows Key / Left ⌘ / Chromebook Search key", 92: "right window key ", 93: "Windows Menu / Right ⌘", 96: "numpad 0 ", 97: "numpad 1 ", 98: "numpad 2 ", 99: "numpad 3 ", 100: "numpad 4 ", 101: "numpad 5 ", 102: "numpad 6 ", 103: "numpad 7 ", 104: "numpad 8 ", 105: "numpad 9 ", 106: "multiply ", 107: "add", 108: "numpad period (firefox)", 109: "subtract ", 110: "decimal point", 111: "divide ", 112: "f1 ", 113: "f2 ", 114: "f3 ", 115: "f4 ", 116: "f5 ", 117: "f6 ", 118: "f7 ", 119: "f8 ", 120: "f9 ", 121: "f10", 122: "f11", 123: "f12", 124: "f13", 125: "f14", 126: "f15", 127: "f16", 128: "f17", 129: "f18", 130: "f19", 131: "f20", 132: "f21", 133: "f22", 134: "f23", 135: "f24", 144: "num lock ", 145: "scroll lock", 160: "^", 161: '!', 163: "#", 164: '$', 165: 'ù', 166: "page backward", 167: "page forward", 169: "closing paren (AZERTY)", 170: '*', 171: "~ + * key", 173: "minus (firefox), mute/unmute", 174: "decrease volume level", 175: "increase volume level", 176: "next", 177: "previous", 178: "stop", 179: "play/pause", 180: "e-mail", 181: "mute/unmute (firefox)", 182: "decrease volume level (firefox)", 183: "increase volume level (firefox)", 186: "semi-colon / ñ", 187: "equal sign ", 188: "comma", 189: "dash ", 190: "period ", 191: "forward slash / ç", 192: "grave accent / ñ / æ", 193: "?, / or °", 194: "numpad period (chrome)", 219: "open bracket ", 220: "back slash ", 221: "close bracket / å", 222: "single quote / ø", 223: "`", 224: "left or right ⌘ key (firefox)", 225: "altgr", 226: "< /git >", 230: "GNOME Compose Key", 231: "ç", 233: "XF86Forward", 234: "XF86Back", 240: "alphanumeric", 242: "hiragana/katakana", 243: "half-width/full-width", 244: "kanji", 255: "toggle touchpad" 
4
06 авг. cavab Ivan 06 aug verilir . 2017-08-06 19:55 '17 də 7:55 pm 2017-08-06 19:55

Gizli bir təqdimat əlavə edin, gizli bir növü deyil, yalnız stil = "display: none" istifadə edərək göndərin. Burada bir nümunə (koddan lazımsız atributlar çıxarılır).

 <form> <input type="text"> <input type="submit" style="display:none"> </form> 

giriş düyməsini ilk olaraq, JavaScript ehtiyac olmadan qəbul edəcək, hər bir brauzerdə işləyir.

4
19 апр. Cavab 19 aprel tarixində Pedja tərəfindən verilmişdir. 2011-04-19 17:54 '11 at 17:54 2011-04-19 17:54

Keyboard vuruşlarını idarə edəcək bir jquery uzantısı olacaq.

 (function ($) { $.prototype.enterPressed = function (fn) { $(this).keyup(function (e) { if ((e.keyCode || e.which) == 13) { fn(); } }); }; }(jQuery || {})); $("#myInput").enterPressed(function() { //do something }); 

Çalışan bir nümunə burada tapa bilərsiniz http://jsfiddle.net/EnjB3/8/

4
12 окт. Reid Evansın 12 oktyabrda verdiyi cavabı 2012-10-12 19:36 '12 at 7:36 pm 2012-10-12 19:36

Bəzi brauzerlər keyCode istifadə, bəziləri isə istifadə edirlər. JQuery istifadə edirsinizsə, jQuery şeyləri standartlaşdırır, çünki etibarlı istifadə edə bilərsiniz. Əslində,

 $('#searchbox input').bind('keypress', function(e) { if(e.keyCode==13){ } }); 
3
08 мая '14 в 14:34 2014-05-08 14:34 cavab Hitesh Modha tərəfindən verilir May 08 '14 14:34 2014-05-08 14:34
 $(document).bind('keypress', function (e) { console.log(e.which); //or alert(e.which); }); 

nəticəni konsolda görmək üçün firbug olmalıdır

3
17 нояб. cavab noyabrın 17-də verilir 2011-11-17 14:07 '11 at 14:07 2011-11-17 14:07

Cadı;)

  var event2key = {'97':'a', '98':'b', '99':'c', '100':'d', '101':'e', '102':'f', '103':'g', '104':'h', '105':'i', '106':'j', '107':'k', '108':'l', '109':'m', '110':'n', '111':'o', '112':'p', '113':'q', '114':'r', '115':'s', '116':'t', '117':'u', '118':'v', '119':'w', '120':'x', '121':'y', '122':'z', '37':'left', '39':'right', '38':'up', '40':'down', '13':'enter'}; var documentKeys = function(event) { console.log(event.type, event.which, event.keyCode); var keycode = event.which || event.keyCode; // par exemple : 112 var myKey = event2key[keycode]; // par exemple : 'p' switch (myKey) { case 'a': $('div').css({ left: '+=50' }); break; case 'z': $('div').css({ left: '-=50' }); break; default: //console.log('keycode', keycode); } }; $(document).on('keydown keyup keypress', documentKeys); 

Demo: http://jsfiddle.net/molokoloco/hgXyq/24/

3
14 июля '11 в 18:37 2011-07-14 18:37 cavab iyul ayının 14-də saat 18: 37-də verilir

Yalnız keypress hadisələri asanlaşdıran jQuery plugin yaratdım. Nömrəni tapmaq və daxil etmək əvəzinə, lazım olan bütün bunlardır:

Necə istifadə etmək olar

  • Aşağıdakı kodu daxil edin
  • Bu kodu çalıştırın:
 $(document).keydown(function(e) { if (getPressedKey(e) == theKeyYouWantToFireAPressEventFor ) { // Your Code To Fire When You Press theKeyYouWantToFireAPressEventFor } }); 

Bu qədər sadədir. theKeyYouWantToFireAPressEventFor bir nömrə deyil, ancaq string (məsələn, A düyməsini basıldığında atış üçün "a" , CTRL (nəzarət) düyməsinə theKeyYouWantToFireAPressEventFor "ctrl" işarəsi və ya bir ədəd halında 1 , heç bir kotirovka yoxdur). 1-si basın .

Misal / Kodu:

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <p>The Pressed Key: <span id=key></span></p> 

Uzun versiya çox yaxşı olduğundan ... yaxşı ... Uzun müddətdir ki, bunun üçün bir PasteBin bağlantısı yaratdım:
http://pastebin.com/VUaDevz1

2
30 июня '15 в 10:06 2015-06-30 10:06 Cavab Zoweb 30 iyun 'da 10:06' da verilir 2015-06-30 10:06

Kilianın cavabına görə:

Girmək yalnız vacibdirsə, düyməni basın

 <form action="javascript:alert('Enter');"> <input type=text value="press enter"> </form> 
2
14 сент. Cavab 14 Sentyabr user669677 tərəfindən verilir . 2011-09-14 13:37 '11 'də 13:37' də 2011-09-14 13:37

Ən asan yol:

 $("#element").keydown(function(event) { if (event.keyCode == 13) { localiza_cep(this.value); } }); 
2
16 дек. 16 dekabrda Rodolfo Jorge Nemer Nogueira tərəfindən verilmiş cavab. 2011-12-16 16:51 '11 'də saat 16:51 ' da 2011-12-16 16:51

event.key və müasir JS istifadə edin!

Sayısal kodlar yoxdur. Birbaşa düyməni yoxlaya bilərsiniz. Məsələn, "Enter" , "LeftArrow" , "r" və ya "r" .

 const input = document.getElementById("searchbox"); input.addEventListener("keypress", function onEvent(event) { if (event.key === "Enter") { // Submit } else if (event.key === "Q") { // Play quacking duck sound, maybe... } }); 

Mozilla Sənədləri

Desteklenen brauzerlər

0
18 февр. Cavab 18 Fevralda Gibolt tərəfindən verilir . 2018-02-18 22:24 '18 at 10:24 pm 2018-02-18 22:24

Aşağıdakıları cəhd edin:

 jQuery('#myInput').keypress(function(e) { code = e.keyCode ? e.keyCode : e.which; if(code.toString() == 13) { alert('You pressed enter!'); } }); 
-9
09 февр. Cavab Omar Yepez tərəfindən verilib 09 fevral. 2010-02-09 22:25 '10 at 10:25 pm 2010-02-09 22:25

tags ilə bağlı digər suallar və ya sual