„JQuery Event Keypress“: kuris mygtukas paspaudžiamas?

Kaip žinau, koks raktas buvo paspaudžiamas, kai prijungiau prie pagrindinio spaudos renginio?

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

Noriu kreiptis į pateikimą, kai paspausiu ENTER .

[Atnaujinti]

Nepaisant to, kad aš pats (arba geriau: vienas), atsakymas atrodo keičiantis;)

Ar yra skirtumas tarp „ keyCode ir which - ypač jei tik ieško ENTER , kuris niekada nebus Unicode simbolis?

Ar kai kuriose naršyklėse yra vienas turtas ir kiti?

662
19 нояб. nustatė BlaM 19 nov. 2008-11-19 17:59 '08 at 17:59 pm 2008-11-19 17:59
@ 23 atsakymai

Tiesą sakant, tai geriau:

  var code = e.keyCode || e.which; if(code == 13) { //Enter keycode //Do something } 
794
19 нояб. atsakymą pateikė Eran Galperin 19 lapkritis 2008-11-19 18:07 '08, 18:07 2008-11-19 18:07

Išbandykite

 $('#searchbox input').bind('keypress', function(e) { if(e.keyCode==13){ // Enter pressed... do anything here... } }); 
126
19 нояб. Atsakymą pateikė Vladimiras Prudnikovas 19 d 2008-11-19 18:05 '08 18:05 val. 2008-11-19 18:05

Jei naudojate jQuery UI, turite bendrų raktų kodų vertimus. Į ui / ui / ui.core.js :

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

Taip pat yra keletas testų / simuliacijų / jquery.simulate.js vertimų, bet jų nepavyko rasti pagrindinėje JS bibliotekoje. Turėkite omenyje, kad tiesiog užsidegiau gaisro šaltiniuose. Galbūt yra dar vienas būdas atsikratyti šių magiškų numerių.

Taip pat galite naudoti String.charCodeAt ir .fromCharCode:

 >>> String.charCodeAt('\r') == 13 true >>> String.fromCharCode(13) == '\r' true 
59
19 нояб. atsakymą pateikė vartotojo35612 lapkritis 19 2008-11-19 19:22 '08, 19:22 pm, 2008-11-19 19:22

Atsižvelgiant į tai, kad naudojate „jQuery“, turėtumėte naudoti. Taip, skirtingos naršyklės nustato skirtingas savybes, tačiau jQuery juos normalizuos ir kiekvienu atveju nustatys. Žr. Dokumentaciją šiuo adresu : http://api.jquery.com/keydown/ , kuriame nurodyta:

Norėdami nustatyti, kuris klavišas buvo paspaudžiamas, galime patikrinti įvykio objektą, kuris yra perduotas tvarkytojo funkcijai. Nors naršyklės saugo šią informaciją skirtingomis savybėmis, „jQuery“ normalizuoja .shich savybę, todėl galime patikimai naudoti jį atkurti kodo kodą.

38
05 марта '10 в 20:47 2010-03-05 20:47 atsakymą pateikė Frank Schwieterman, kovo 05 '10, 20:47 2010-03-05 20:47

... šis pavyzdys neleidžia išsiųsti formos (reguliariai pagrindinis tikslas, kai užfiksuojamas klavišas # 13):

 $('input#search').keypress(function(e) { if (e.which == '13') { e.preventDefault(); doSomethingWith(this.value); } }); 
30
13 мая '10 в 1:58 2010-05-13 01:58 atsakymą pateikė vartotojo184365 gegužės 13 d., „10, 1:58 2010-05-13 01:58
  // 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 atsakymą pateikė Luca Filosofi gegužės 07 d. 10 val. 18:35 2010-05-07 18:35

redaguoti: tai veikia tik IE ...

Suprantu, kad tai yra senas leidinys, bet kažkas gali tai pasakyti.

Rodomi pagrindiniai įvykiai, todėl vietoj raktų kodo vertės galite naudoti pagrindinę vertę, kad ją būtų lengviau skaityti.

 $(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 } }); 

Čia yra apgauti sąrašas su susietais raktais, kuriuos aš gavau iš šio 2019

24
08 янв. Atsakė Kevinas sausio 08 d 2013-01-08 04:27 '13, 4:27, 2013-01-08 04:27

Peržiūrėkite puikų „ jquery.hotkeys“ papildinį, kuris palaiko sparčiuosius klavišus:

 $(document).bind('keydown', 'ctrl+c', fn); 
20
20 июля '10 в 22:21 2010-07-20 22:21 atsakymą pateikė vartotojo397198 liepos 20 d., 10 val. 10:21 val. 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(); }); }); 

Tikiuosi, kad tai padės jums !!!

14
17 февр. atsakymas pateikiamas rajakvk 17 vas. 2009-02-17 14:18 '09 at 14:18 2009-02-17 14:18

Na, aš buvau aklas:

 e.which 

bus ASCII kodo kodas.

Žr. Https://developer.mozilla.org/En/DOM/Event.which

6
19 нояб. Atsakymas pateikiamas BlaM 19 lapkričio. 2008-11-19 18:01 '08 at 18:01 2008-11-19 18:01

Čia yra išsamus įvairių naršyklių elgesio aprašymas http://unixpapa.com/js/key.html

6
05 марта '10 в 20:41 2010-03-05 20:41 atsakymą pateikė Phil kovo 05'10 10:41 2010-03-05 20:41

Aš tiesiog pridėsiu tirpalo kodą su šia eilute e.preventDefault(); . Jei įvesite formos lauką, mes negalime dalyvauti, kai siunčiate

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

Tai beveik pilnas raktų kodų sąrašas:

 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 авг. atsakymas duotas Ivano 06 rug. 2017-08-06 19:55 '17, 19:55 pm 2017-08-06 19:55

Pridėti paslėptą pateiktį, o ne paslėptą tipą, tiesiog pateikite naudodami stilių = "ekranas: nėra". Štai pavyzdys (pašalinami nereikalingi atributai iš kodo).

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

pradžioje jis priims įvesties raktą, nereikalaujant „JavaScript“, jis veikia kiekvienoje naršyklėje.

4
19 апр. Atsakymą pateikė Pedja balandžio 19 d. 2011-04-19 17:54 '11, 17:54, 2011-04-19 17:54

Bus jquery pratęsimas, kuris apdoros klavišų paspaudimus.

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

Darbo pavyzdį galima rasti čia: http://jsfiddle.net/EnjB3/8/

4
12 окт. Reido Evano atsakymas, pateiktas spalio 12 d 2012-10-12 19:36 '12 at 7:36 pm 2012-10-12 19:36

Kai kurios naršyklės naudoja raktų kodą, kitos naudoja. Jei naudojate jQuery, galite patikimai naudotis, nes jQuery standartizuoja daiktus. Iš tiesų

 $('#searchbox input').bind('keypress', function(e) { if(e.keyCode==13){ } }); 
3
08 мая '14 в 14:34 2014-05-08 14:34 atsakymą pateikė Hitesh Modha gegužės 8 d. 14, 14:34 2014-05-08 14:34
 $(document).bind('keypress', function (e) { console.log(e.which); //or alert(e.which); }); 

turite matyti firbug, kad matytumėte konsolės rezultatą

3
17 нояб. Atsakymas duotas manny lapkričio 17 d 2011-11-17 14:07 '11, 14:07, 2011-11-17 14:07

Ragana;)

  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 atsakymas pateikiamas molokoloco liepos 14 d. 11 val. 18:37 2011-07-14 18:37

Aš ką tik sukūriau jQuery įskiepį, kuris palengvina keypress įvykius. Vietoj to, kad surastumėte numerį ir jį įvestumėte, jums tereikia:

Kaip jį naudoti

  • Įtraukite žemiau esantį kodą
  • Paleiskite šį kodą:
 $(document).keydown(function(e) { if (getPressedKey(e) == theKeyYouWantToFireAPressEventFor ) { // Your Code To Fire When You Press theKeyYouWantToFireAPressEventFor } }); 

Tai taip paprasta. Atkreipkite dėmesį, kad „ theKeyYouWantToFireAPressEventFor nėra skaičius, bet eilutė (pvz., "a" fotografuojant, kai nuspaudžiamas "ctrl" A“ , "ctrl" užsidega, kai paspaudžiamas CTRL (valdymo) mygtukas, arba, skaičiaus atveju, tik 1 , be kabučių.) paspaudus 1. )

Pavyzdys / kodas:

 <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> 

Kadangi ilgoji versija yra tokia ... gerai ... ilgai, sukūriau nuorodą „PasteBin“:
http://pastebin.com/VUaDevz1

2
30 июня '15 в 10:06 2015-06-30 10:06 atsakymas pateikiamas Zoweb birželio 30 d. 15 val. 10:06 2015-06-30 10:06

Pagal Kiliano atsakymą:

Jei svarbu tik įvesti, paspauskite klavišą

 <form action="javascript:alert('Enter');"> <input type=text value="press enter"> </form> 
2
14 сент. Atsakymą pateikė user669677 September 14. 2011-09-14 13:37 '11, 13:37, 2011-09-14 13:37

Lengviausias būdas:

 $("#element").keydown(function(event) { if (event.keyCode == 13) { localiza_cep(this.value); } }); 
2
16 дек. Rodolfo Jorge Nemer Nogueira atsakymas, pateiktas gruodžio 16 d. 2011-12-16 16:51 '11, 4:51 val. 2011-12-16 16:51

Naudokite event.key ir modernią JS!

Nėra skaitmeninių kodų. Galite tiesiogiai patikrinti raktą. Pavyzdžiui, "Enter" , "LeftArrow" , "r" arba "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“ dokumentai

Palaikomos naršyklės

0
18 февр. atsakymą pateikė Giboltas vasario 18 d. 2018-02-18 22:24 '18, 10:24 val. 2018-02-18 22:24

Pabandykite atlikti šiuos veiksmus:

 jQuery('#myInput').keypress(function(e) { code = e.keyCode ? e.keyCode : e.which; if(code.toString() == 13) { alert('You pressed enter!'); } }); 
-9
09 февр. Atsakymą pateikė Omar Yepez 09 vasaris. 2010-02-09 22:25 '10 10:25 val. 2010-02-09 22:25

Kiti klausimai apie „ žymes, kurios padeda arba Užduoti klausimą