জাভাস্ক্রিপ্টে কী কোড থেকে চরিত্রের মানটি পান ... তারপরে ট্রিম করুন


152

আমার এখন যা আছে:

$("input").bind("keydown",function(e){
    var value = this.value + String.fromCharCode(e.keyCode);
}

যদি e.keyCodeএকটি ASCII অক্ষর নাও হতে পারে ( Alt, backspace, del, arrows।, ইত্যাদি) ... আমি এখন করতে হবে trimএই মান থেকে valueএকরকম (- লুকআপ টেবিল না বাঞ্ছনীয় প্রোগ্রামেটিক্যালি)।

আমি jQuery ব্যবহার করছি।

আমি অবশ্যই keydownইভেন্টটি ব্যবহার করব । keyPressনির্দিষ্ট কী-আমি (ক্যাপচার প্রয়োজন জন্য সক্রিয় নেই Esc, del, backspace, ইত্যাদি)।

setTimeoutইনপুটটির মান পেতে আমি ব্যবহার করতে পারি না । setTimeout(function(){},0)খুব ধীর।


11
keydownচরিত্রের কোডগুলি ক্যাপচার করতে আপনাকে অবশ্যই ব্যবহার করতে হবে ? আপনি একটি যাত্রায় জাহান্নামের জন্য আছেন: quirksmode.org/js/keys.html (ইঙ্গিত: ব্যবহার keypress!! )
ক্রিসেন্ট ফ্রেশ

1
চরিত্রের ক্ষেত্রে কিছু যায় আসে না। এবং আমার কমপক্ষে এফএফ এবং আইইয়ের জন্য নীচে, বাম, ডান, এসকে, ডেল, ব্যাকস্পেস ক্যাপচার করা দরকার; তাই কিপ্রেস প্রশ্ন বাইরে। যদিও ইঙ্গিতটির জন্য ধন্যবাদ। :-)
ডেভিড মুরডোচ

এই সমস্যার প্রতিক্রিয়া হিসাবে আমি কেবল একটি jQuery প্লাগইন লিখেছি: github.com/bpeacock/key-to-charCode এটি কিছুটা নিচে এবং নোংরা এবং জিকুয়েরিতে আরও ভালভাবে সংহত হতে পারে তবে এটি একটি শুরু।
ব্রায়ান ময়ূর

1
যে কেউ এখানে এসেছেন কী-কোড সমস্যাটি সমাধান করার চেষ্টা করছেন তবে কী কী চাপছিল তা সত্যিই দেখতে চান, এই উত্তরটি দেখুন । টিএলডিআর:document.onkeydown = function(e){ console.log('Key: ' + e.key); }
ব্যবহারকারী 1717828

উত্তর:


164

হয়তো আমি প্রশ্নটি সঠিকভাবে বুঝতে পারি নি, তবে আপনি keyupযদি উভয় ইনপুট ক্যাপচার করতে চান তবে আপনি কি ব্যবহার করতে পারবেন না ?

$("input").bind("keyup",function(e){
    var value = this.value + String.fromCharCode(e.keyCode);
});

10
এটি অন্যান্য স্থানীয় অবস্থানগুলির সাথে কাজ করে না যা ASCII সীমার বাইরে (যেমন লাতিন -১ এর উদাহরণস্বরূপ, জার্মান, ফরাসি, ইতালিয়ান এবং স্প্যানিশ যদি আপনার অবশ্যই জানা থাকে)। স্পষ্টতই মুদ্রণযোগ্য কীগুলির জন্যও ব্যর্থ হয়।
ফ্লোরিয়ান বাসচ

9
নম্বর প্যাডে নম্বর ব্যবহার করার সময় এটিও ব্যর্থ হয়, e.keyCode ASCII (বা এমনকি ইউটিএফ-এক্স) কোড নয়।
টম চিভারটন

2
খারাপ উত্তর, এটি এমনকি মৌলিক চরিত্রগুলির সাথেও কাজ করে না। সেমিকোলন কী কোড, উদাহরণস্বরূপ, 186, এটির উপর একটি স্ট্রিং.ফ্রমচোড () চালান এবং আপনি আবর্জনা পাবেন। সমস্যাটি হ'ল কী-কোড সমস্ত অক্ষরের সাথে ASCII- র সাথে মিল রাখে না। সেমিকোলনের জন্য ASCII অক্ষর 59 59 একই সমস্যাটি প্রতিটি বিশেষ চরিত্রের ক্ষেত্রে সত্য, কী কোড কোড স্ট্রিং.ফর্মচার্ড () এর জন্য সঠিক কোডটি দেয় না।
আলেকজান্ডার টিসেপকভ

193

আমার অভিজ্ঞতা String.fromCharCode(e.keyCode)অবিশ্বাস্য। String.fromCharCodeআর্গুমেন্ট হিসাবে ইউনিকোড চারকোড আশা করে; e.keyCodeজাভাস্ক্রিপ্ট কীকোড প্রদান করে। জাভাস্ক্রিপ্ট keycodes এবং ইউনিকোড charcodes হয় না একই জিনিস! বিশেষত, নম্বরপ্যাড কীগুলি keycodeসাধারণ নম্বর কীগুলির থেকে আলাদা (যেহেতু এগুলি পৃথক কী) এবং keycodeউভয় upperএবং lowercaseঅক্ষরের জন্য একই ফিরিয়ে দেওয়া হয় (আপনি উভয় ক্ষেত্রে একই কী টিপেন), আলাদা থাকা সত্ত্বেও charcodes

উদাহরণস্বরূপ, সাধারণ সংখ্যা Key 1 সাথে একটি ইভেন্ট তৈরি করে keycodenumberpad Key 1 (সঙ্গে যখন 49 Numlockদিকে) উত্পন্ন keycode97. নিয়ে ব্যবহৃত String.fromCharCodeআমরা নিম্নলিখিত পাবেন:

String.fromCharCode(49) returns "1"
String.fromCharCode(97) returns "a"

String.fromCharCodeইউনিকোড চারকোড প্রত্যাশা করে, জাভাস্ক্রিপ্ট কীকোড নয়। কীটি 65 aটির একটি ইভেন্ট উত্পন্ন করে keycode, এটি যে চরিত্রটি উত্পন্ন করবে তার ক্ষেত্রে স্বতন্ত্র (কীটিতে Shiftকীটি টিপানো হয় ইত্যাদি ক্ষেত্রে একটি পরিবর্তনকারীও রয়েছে)। চরিত্রটির aএকটি ইউনিকোড charcodeরয়েছে 61 এবং চরিত্রটির Aএকটি charcode41 রয়েছে (উদাহরণস্বরূপ, http://www.utf8-chartable.de/ )। যাইহোক, সেগুলি hexমানগুলি হয়, দশমিক রূপান্তরকরণ আমাদের charcode"A" এর জন্য 65 এবং "a" এর জন্য 97 প্রদান করে [[1] এই String.fromCharCodeমানগুলির জন্য আমরা যা পাই তার সাথে এটি সামঞ্জস্যপূর্ণ ।

আমার নিজস্ব প্রয়োজনীয়তা প্রক্রিয়া সংখ্যা এবং সাধারণ চিঠিগুলি (স্ট্রিংয়ের অবস্থানের উপর নির্ভর করে Fস্বীকৃতি বা প্রত্যাখ্যান) এবং নিয়ন্ত্রণের অক্ষরগুলি ( -কেজ, -সামোথিং Ctrl) এর মাধ্যমে সীমাবদ্ধ ছিল । সুতরাং আমি নিয়ন্ত্রণের অক্ষরগুলির জন্য যাচাই করতে পারি, যদি এটি কোনও নিয়ন্ত্রণ চরিত্র না হয় তবে আমি কোনও ব্যাপ্তির বিপরীতে যাচাই করি এবং কেবল তখনই আমার প্রকৃত চরিত্রটি পেতে হবে। প্রদত্ত আমি কেস সম্পর্কে উদ্বিগ্ন নই (আমি যেভাবেই হোক সমস্ত অক্ষর বড় হাতের অক্ষরে পরিবর্তন করি) এবং ইতিমধ্যে কীকোডগুলির সীমাবদ্ধতা সীমাবদ্ধ রেখেছি, আমাকে কেবল নম্বরপ্যাড কীগুলি নিয়েই চিন্তা করতে হবে। নিম্নলিখিত জন্য যথেষ্ট:

String.fromCharCode((96 <= key && key <= 105)? key-48 : key)

আরও সাধারণভাবে, একটি থেকে নির্ভরযোগ্যভাবে চরিত্রটি ফিরিয়ে ফাংশনটি charcodeদুর্দান্ত হতে পারে (সম্ভবত একটি jQuery প্লাগইন হিসাবে) তবে এখনই এটি লেখার আমার কাছে সময় নেই। দুঃখিত।

আমি আরও উল্লেখ করেছি e.which(যদি আপনি jQuery ব্যবহার করছেন) যা স্বাভাবিক হয় e.keyCodeএবং e.charCodeযাতে আপনার কী ধরণের কী চাপানো হয়েছিল তা নিয়ে চিন্তা করার দরকার নেই। এটি String.fromCharCodeঅবশিষ্টাংশের সাথে একত্রিত করার সমস্যা ।

[1] আমি কিছুক্ষণের জন্য বিভ্রান্ত হয়ে পড়েছিলাম -। সমস্ত দস্তাবেজ বলে যে String.fromCharCodeএকটি ইউনিকোড প্রত্যাশা করে charcode, বাস্তবে এটি ASCII চারকোডের জন্য কাজ করে বলে মনে হয়েছিল, তবে এএসসিআইআই চারকোড এবং ইউনিকোড দশমিক চারকোডগুলি সাধারণের সাথে ওভারল্যাপ হওয়ার সাথে মিল রেখে হেক্স থেকে দশমিক রূপান্তর করার প্রয়োজনীয়তার কারণেই আমি মনে করি লাতিন অক্ষর


2
এই মন্তব্যটি আমার সমস্ত সমস্যাগুলি বেশ প্রশমিত করেছে। এটা আমার কাছে আশ্চর্যজনক যে jQuery জাভাস্ক্রিপ্টের "স্ট্রিং.ফ্রোমচারকোড" এর সমতুল্য "ফ্রম কেডকোড" প্রয়োগ করেনি
ক্রিস জে

27
দেখে মনে হচ্ছে কীপ্রেস ইভেন্টটি এটি করে। স্ট্যাকওভারফ্লো . com/a/9350415/209568 দেখুন । জিকিউরি ডকস থেকে "নোট করুন কী কীডাউন এবং কীআপ কোন কী চাপছে তা নির্দেশ করে এমন একটি কোড সরবরাহ করে, যা কীপ্রেস নির্দেশ করে কোন অক্ষরটি প্রবেশ করানো হয়েছিল। উদাহরণস্বরূপ, একটি ছোট হাতের" ক "কে কীডাউন এবং কীআপ দ্বারা 65 হিসাবে চিহ্নিত করা হবে, তবে 97 হিসাবে কিপ্রেস দ্বারা রিপোর্ট করা হবে । সমস্ত ইভেন্টের দ্বারা একটি বড় হাতের "এ" 65 হিসাবে রিপোর্ট করা হয় arrow এই পার্থক্যের কারণে, যখন তীর কীগুলির মতো বিশেষ কী-স্ট্রোকগুলি ধরা হয়, .keydown () বা .keyup () আরও ভাল পছন্দ। "
আদম

আমরা যারা কীডাউন আসক্ত তাদের জন্য এটি সবচেয়ে অপ্রীতিকর।
আইজাক বলিঞ্জার

এএসসিআইআই এবং ইউনিকোড সম্পর্কে সর্বশেষ বিটের একটি নোট। ইউনিকোডে একই জায়গায় সমস্ত 128 এএসসিআইআই অক্ষর রয়েছে। এটি উদ্দেশ্যমূলক ছিল যাতে মূলত এএসসিআইআই হিসাবে এনকোড করা কোনও ফাইল ইউনিকোডের কোনও কাজের প্রয়োজন ছাড়াই (এবং রূপান্তরিত হতে পারে) মাস্ক্রেড করতে পারে। প্রসারিত ASCII অক্ষরগুলি একই জায়গায় না থাকলেও, যদি আপনি এই অক্ষরগুলি ব্যবহার করেন তবে আপনার ভাগ্যের বাইরে।
ড্যানিয়েলএম

1
মূল বিষয়টি keyCodeহ'ল কী কী চাপানো হয়েছিল তা জানতে, কোন অক্ষরটি ব্যবহার করা উচিত তা নয়। উদাহরণস্বরূপ, ডিভোরাক কীবোর্ডে "ইউ" এর কিউবার্ড কিবোর্ডে "এফ" এর সমান কীকোড বা কোরিয়ান কীবোর্ডে "ㄹ" ইত্যাদি রয়েছে। বিন্দুটি এটি একটি চরিত্রে রূপান্তরিত করার নয়, এটি সেখানে রয়েছে যাতে আপনি পারেন কোনও কীবোর্ড অবস্থানে সহজেই জিনিসগুলি মানচিত্র করুন।
ভিনসেন্ট ম্যাকনাব

77

কী কোড দ্বারা সূচিযুক্ত পঠনযোগ্য কী নাম

সেখানে তুলনামূলকভাবে কিছু কী কোডগুলি তাই আমি কেবল একটি স্ট্যাটিক অ্যারের মধ্যে সব সংশ্লিষ্ট মান তালিকাভুক্ত তাই আমি কেবল সংখ্যা রূপান্তর পারে 65মধ্যে Aব্যবহারkeyboardMap[65]

সমস্ত কী কোড মুদ্রণযোগ্য চরিত্রের মানচিত্র নয় যাতে কিছু অন্যান্য শনাক্তযোগ্য স্ট্রিং ফিরে আসে।

আপনার প্রয়োজন অনুসারে আপনাকে অ্যারে সংশোধন করতে হবে এবং আপনি অনুবাদ করতে চান না এমন সমস্ত অক্ষরের জন্য খালি স্ট্রিংগুলি সহজেই ফিরে আসতে পারে। নিম্নলিখিত অ্যারে আমাকে কোনও পরিবেশে কোন কীটি চাপছিল তা তাড়াতাড়ি এবং নির্ভরযোগ্যভাবে নির্ধারণ করতে দেয়। উপভোগ করুন!

// names of known key codes (0-255)

var keyboardMap = [
  "", // [0]
  "", // [1]
  "", // [2]
  "CANCEL", // [3]
  "", // [4]
  "", // [5]
  "HELP", // [6]
  "", // [7]
  "BACK_SPACE", // [8]
  "TAB", // [9]
  "", // [10]
  "", // [11]
  "CLEAR", // [12]
  "ENTER", // [13]
  "ENTER_SPECIAL", // [14]
  "", // [15]
  "SHIFT", // [16]
  "CONTROL", // [17]
  "ALT", // [18]
  "PAUSE", // [19]
  "CAPS_LOCK", // [20]
  "KANA", // [21]
  "EISU", // [22]
  "JUNJA", // [23]
  "FINAL", // [24]
  "HANJA", // [25]
  "", // [26]
  "ESCAPE", // [27]
  "CONVERT", // [28]
  "NONCONVERT", // [29]
  "ACCEPT", // [30]
  "MODECHANGE", // [31]
  "SPACE", // [32]
  "PAGE_UP", // [33]
  "PAGE_DOWN", // [34]
  "END", // [35]
  "HOME", // [36]
  "LEFT", // [37]
  "UP", // [38]
  "RIGHT", // [39]
  "DOWN", // [40]
  "SELECT", // [41]
  "PRINT", // [42]
  "EXECUTE", // [43]
  "PRINTSCREEN", // [44]
  "INSERT", // [45]
  "DELETE", // [46]
  "", // [47]
  "0", // [48]
  "1", // [49]
  "2", // [50]
  "3", // [51]
  "4", // [52]
  "5", // [53]
  "6", // [54]
  "7", // [55]
  "8", // [56]
  "9", // [57]
  "COLON", // [58]
  "SEMICOLON", // [59]
  "LESS_THAN", // [60]
  "EQUALS", // [61]
  "GREATER_THAN", // [62]
  "QUESTION_MARK", // [63]
  "AT", // [64]
  "A", // [65]
  "B", // [66]
  "C", // [67]
  "D", // [68]
  "E", // [69]
  "F", // [70]
  "G", // [71]
  "H", // [72]
  "I", // [73]
  "J", // [74]
  "K", // [75]
  "L", // [76]
  "M", // [77]
  "N", // [78]
  "O", // [79]
  "P", // [80]
  "Q", // [81]
  "R", // [82]
  "S", // [83]
  "T", // [84]
  "U", // [85]
  "V", // [86]
  "W", // [87]
  "X", // [88]
  "Y", // [89]
  "Z", // [90]
  "OS_KEY", // [91] Windows Key (Windows) or Command Key (Mac)
  "", // [92]
  "CONTEXT_MENU", // [93]
  "", // [94]
  "SLEEP", // [95]
  "NUMPAD0", // [96]
  "NUMPAD1", // [97]
  "NUMPAD2", // [98]
  "NUMPAD3", // [99]
  "NUMPAD4", // [100]
  "NUMPAD5", // [101]
  "NUMPAD6", // [102]
  "NUMPAD7", // [103]
  "NUMPAD8", // [104]
  "NUMPAD9", // [105]
  "MULTIPLY", // [106]
  "ADD", // [107]
  "SEPARATOR", // [108]
  "SUBTRACT", // [109]
  "DECIMAL", // [110]
  "DIVIDE", // [111]
  "F1", // [112]
  "F2", // [113]
  "F3", // [114]
  "F4", // [115]
  "F5", // [116]
  "F6", // [117]
  "F7", // [118]
  "F8", // [119]
  "F9", // [120]
  "F10", // [121]
  "F11", // [122]
  "F12", // [123]
  "F13", // [124]
  "F14", // [125]
  "F15", // [126]
  "F16", // [127]
  "F17", // [128]
  "F18", // [129]
  "F19", // [130]
  "F20", // [131]
  "F21", // [132]
  "F22", // [133]
  "F23", // [134]
  "F24", // [135]
  "", // [136]
  "", // [137]
  "", // [138]
  "", // [139]
  "", // [140]
  "", // [141]
  "", // [142]
  "", // [143]
  "NUM_LOCK", // [144]
  "SCROLL_LOCK", // [145]
  "WIN_OEM_FJ_JISHO", // [146]
  "WIN_OEM_FJ_MASSHOU", // [147]
  "WIN_OEM_FJ_TOUROKU", // [148]
  "WIN_OEM_FJ_LOYA", // [149]
  "WIN_OEM_FJ_ROYA", // [150]
  "", // [151]
  "", // [152]
  "", // [153]
  "", // [154]
  "", // [155]
  "", // [156]
  "", // [157]
  "", // [158]
  "", // [159]
  "CIRCUMFLEX", // [160]
  "EXCLAMATION", // [161]
  "DOUBLE_QUOTE", // [162]
  "HASH", // [163]
  "DOLLAR", // [164]
  "PERCENT", // [165]
  "AMPERSAND", // [166]
  "UNDERSCORE", // [167]
  "OPEN_PAREN", // [168]
  "CLOSE_PAREN", // [169]
  "ASTERISK", // [170]
  "PLUS", // [171]
  "PIPE", // [172]
  "HYPHEN_MINUS", // [173]
  "OPEN_CURLY_BRACKET", // [174]
  "CLOSE_CURLY_BRACKET", // [175]
  "TILDE", // [176]
  "", // [177]
  "", // [178]
  "", // [179]
  "", // [180]
  "VOLUME_MUTE", // [181]
  "VOLUME_DOWN", // [182]
  "VOLUME_UP", // [183]
  "", // [184]
  "", // [185]
  "SEMICOLON", // [186]
  "EQUALS", // [187]
  "COMMA", // [188]
  "MINUS", // [189]
  "PERIOD", // [190]
  "SLASH", // [191]
  "BACK_QUOTE", // [192]
  "", // [193]
  "", // [194]
  "", // [195]
  "", // [196]
  "", // [197]
  "", // [198]
  "", // [199]
  "", // [200]
  "", // [201]
  "", // [202]
  "", // [203]
  "", // [204]
  "", // [205]
  "", // [206]
  "", // [207]
  "", // [208]
  "", // [209]
  "", // [210]
  "", // [211]
  "", // [212]
  "", // [213]
  "", // [214]
  "", // [215]
  "", // [216]
  "", // [217]
  "", // [218]
  "OPEN_BRACKET", // [219]
  "BACK_SLASH", // [220]
  "CLOSE_BRACKET", // [221]
  "QUOTE", // [222]
  "", // [223]
  "META", // [224]
  "ALTGR", // [225]
  "", // [226]
  "WIN_ICO_HELP", // [227]
  "WIN_ICO_00", // [228]
  "", // [229]
  "WIN_ICO_CLEAR", // [230]
  "", // [231]
  "", // [232]
  "WIN_OEM_RESET", // [233]
  "WIN_OEM_JUMP", // [234]
  "WIN_OEM_PA1", // [235]
  "WIN_OEM_PA2", // [236]
  "WIN_OEM_PA3", // [237]
  "WIN_OEM_WSCTRL", // [238]
  "WIN_OEM_CUSEL", // [239]
  "WIN_OEM_ATTN", // [240]
  "WIN_OEM_FINISH", // [241]
  "WIN_OEM_COPY", // [242]
  "WIN_OEM_AUTO", // [243]
  "WIN_OEM_ENLW", // [244]
  "WIN_OEM_BACKTAB", // [245]
  "ATTN", // [246]
  "CRSEL", // [247]
  "EXSEL", // [248]
  "EREOF", // [249]
  "PLAY", // [250]
  "ZOOM", // [251]
  "", // [252]
  "PA1", // [253]
  "WIN_OEM_CLEAR", // [254]
  "" // [255]
];

দ্রষ্টব্য: উপরের অ্যারেতে প্রতিটি মানের অবস্থান গুরুত্বপূর্ণ। ""অজানা মান কোডগুলি প্লেসহোল্ডার হয়।

এই স্থিতিশীল অ্যারে দেখার পদ্ধতির ব্যবহার করে নীচের কোড স্নিপেট ব্যবহার করে দেখুন ...


মূল কোডগুলি মূল্যবান

চিঠিগুলি এজেড: (65-90)

keyboardMap[65];  // A
...
keyboardMap[90];  // Z

সংখ্যা 0-9: (48-57)

keyboardMap[48];  // 0
...
keyboardMap[57];  // 9

সংখ্যা প্যাড 0-9: (96-105)

keyboardMap[96];   // NUMPAD0
...
keyboardMap[105];  // NUMPAD9

তীর কীগুলি: (37-40)

keyboardMap[37];  // LEFT
keyboardMap[38];  // UP
keyboardMap[39];  // RIGHT
keyboardMap[40];  // DOWN

ট্যাব কী: (9)

keyboardMap[9];  // TAB

কী প্রবেশ করান: (13)

keyboardMap[13];  // ENTER

স্পেসবার কী: (32)

keyboardMap[32];  // SPACE

ওএস নির্দিষ্ট কী (91) উইন্ডোজ কী (উইন্ডোজ) বা কমান্ড কী (ম্যাক)

keyboardMap[91];  // OS_KEY

আল্ট কী: (18)

keyboardMap[18];  // ALT

নিয়ন্ত্রণ কী: (17)

keyboardMap[17];  // CONTROL

শিফট কী: (16)

keyboardMap[16];  // SHIFT

ক্যাপস লক কী: (20)

keyboardMap[20];  // CAPS_LOCK

বিশেষ অক্ষরের জন্য কাজ করছেন না, যদি কোনও শিফট কী সহ কীগুলি প্রবেশ করান?
শাইখ মাথীন

14

কেবলমাত্র একটি গুরুত্বপূর্ণ নোট: উপরের স্বীকৃত উত্তরগুলি কী কোড /> 144, যেমন সময়কাল, কমা, ড্যাশ ইত্যাদির জন্য সঠিকভাবে কাজ করবে না তাদের জন্য আপনার আরও সাধারণ অ্যালগোরিদম ব্যবহার করা উচিত:

let chrCode = keyCode - 48 * Math.floor(keyCode / 48);
let chr = String.fromCharCode((96 <= keyCode) ? chrCode: keyCode);

যদি আপনি কেন আগ্রহী হন তবে অন্তর্নির্মিত জেএস ফাংশনের আচরণের কারণে এটি স্পষ্টতই প্রয়োজনীয় String.fromCharCode()। এর মানগুলির জন্য keyCode <= 96ফাংশনটি ব্যবহার করে মানচিত্রটি মনে হচ্ছে:

chrCode = keyCode - 48 * Math.floor(keyCode / 48)

এর মানগুলির জন্য keyCode > 96ফাংশনটি ব্যবহার করে মানচিত্রটি মনে হচ্ছে:

chrCode = keyCode

যদি এটাকে বিজোড় আচরণ বলে মনে হয় তবে ভাল..আমি রাজি আছি। দুঃখজনকভাবে যথেষ্ট, আমি জেএস কোরটিতে দেখা সবচেয়ে অদ্ভুত জিনিসটি থেকে অনেক দূরে।

document.onkeydown = function(e) {
    let keyCode = e.keyCode;
    let chrCode = keyCode - 48 * Math.floor(keyCode / 48);
    let chr = String.fromCharCode((96 <= keyCode) ? chrCode: keyCode);
    console.log(chr);
};
<input type="text" placeholder="Focus and Type"/>


1
আপনি let২০০৯ সাল থেকে একটি প্রশ্নের উত্তরে লোককে বিভ্রান্ত করতে চলেছেন । :-)
ডেভিড মারডোক

12
যদি কেউ ES6 ​​টি সন্ধান করে আবিষ্কার করে letতবে আমি তাদের একটি অনুগ্রহ করেছিলাম ;-)
গ্যালারেন্ট

@ গ্যালারেন্ট আপনি দয়া করে ব্যাখ্যা করতে পারবেন কেন / কেন এটি কাজ করে?
ইজহার আযমী

@ ইজহারআজমি ব্যাখ্যা যোগ করেছেন। আশা করি এটা সাহায্য করবে!
galarant

1
এটি একটি সংখ্যাযুক্ত কী-প্যাডের সংখ্যা কীগুলির জন্য (প্রসারিত কীবোর্ডগুলির ডানদিকে কীগুলির গ্রিড) সঠিকভাবে কাজ করে না।
স্কট বুচানন

2

আমি ধরে নিচ্ছি এটি কোনও গেমের জন্য বা দ্রুত সাড়া দেওয়ার মতো অ্যাপ্লিকেশনের জন্য তাই কীপ্রেসের চেয়ে কীডাউন ব্যবহার করুন।

সম্পাদনা : ডাং! আমি সংশোধন করে দাঁড়িয়েছি (ধন্যবাদ ক্রিসেন্ট ফ্রেশ এবং ডেভিড): জ্যাকুয়ারি (বা বরং অন্তর্নিহিত ডোম হোস্টগুলি) ডাব্লুএম_কিডাউন এবং অন্যান্য ইভেন্টের বিশদটি প্রকাশ করে না । বরং তারা এই ডেটাটিকে প্রাক-হজম করে এবং কী-ডাউনের ক্ষেত্রে এমনকি জিকুয়েরিতেও আমরা পাই:

নোট করুন যে এই বৈশিষ্ট্যগুলি ইউনিকোড মান।
দ্রষ্টব্য, আমি জিকুয়েরি ডক্সে এর কোনও অনুমোদনযোগ্য রেফারেন্স খুঁজে পাইনি, তবে নেটটিতে প্রচুর নামী দামী উদাহরণগুলি এই দুটি বৈশিষ্ট্যকে বোঝায়।

আমার কিছু জাভা (জাভাস্ক্রিপ্ট নয়) থেকে গৃহীত নিম্নলিখিত কোডটি অতএব সম্পূর্ণ ভুল ...

নিম্নলিখিতটি আপনাকে কীকোডের "আকর্ষণীয়" অংশগুলি দেবে:

  value = e.KeyCode;
  repeatCount = value & 0xFF;
  scanCode = (value >> 16) & 0xFF;  // note we take the "extended bit" deal w/ it later.
  wasDown = ((value & 0x4000) != 0);  // indicate key was readily down (auto-repeat)
  if (scanCode > 127)
      // deal with extended
  else
      // "regular" character

এইচএম, কোনও যান না, স্ক্যানকোড সর্বদা 0 এর ফলাফল দেয় And
ডেভিড মারডোক

আরে এখন ... হ্যালো, অপেক্ষা করুন ... ওয়া ?? আমরা এখানে JScript কথা বলছি বা কিছু?
ক্রিসেন্ট তাজা

@ ডেভিড এম। আমার খারাপ, জ্যাকিউরি আমাদের জন্য এই কোড অংশগুলি "প্রাক হজম" করে। আমি এখন এটি খতিয়ে দেখছি।
এমজেভি

1
@ এমজেভি: আপনি এই কোডটি কোথায় পেয়েছেন? এটি কি কখনও আপনার জন্য কাজ করেছে? এএআইএআইএফির কোনও ডিওএম বাস্তবায়ন ইভেন্টের বস্তুতে ( keydownবা না) সেই সমস্ত তথ্য এনকোড করে ।
ক্রিসেন্ট তাজা

@ ক্রিসেন্ট: আমি এটিকে আমার কিছু জাভা কোড থেকে দ্রুত এবং নির্লজ্জভাবে এটিকে খাপ খাইয়ে নিয়েছি, যেভাবেই এটি পুরানো ... যাইহোক, আপনি পুরোপুরি ঠিক বলেছেন: কীবোর্ডের জন্য ডম-এর কেউ এ জাতীয় কোনও কাণ্ড ঘটনার হাতছাড়া করেনি। আমি সেই অনুসারে আমার গদ্য স্থির করেছি; এখনও JQuery.com থেকে এই বিষয়ে একটি প্রামাণ্য ডক খুঁজছেন
এমজেভি

0

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমি আজ এই সমস্যাটির পূর্ব-প্যাকেজযুক্ত সমাধানের সন্ধান করতে পেরেছি এবং সত্যিকার অর্থে আমার চাহিদা মেটাতে এমন কিছুই পাই নি।

এখানে একটি সমাধান রয়েছে (কেবলমাত্র ইংরেজী) যা সঠিকভাবে উপরের কেস (স্থানান্তরিত), লোয়ার কেস, বিরামচিহ্ন, সংখ্যা কীপ্যাড ইত্যাদি সমর্থন করে supports

এটি ESC, তীরচিহ্ন, ফাংশন কী ইত্যাদির মতো প্রিন্টযোগ্য কীগুলি - এবং এর প্রতিক্রিয়া - - এর সহজ এবং সরাসরি-সম্মুখের সনাক্তকরণেরও অনুমতি দেয়

https://jsfiddle.net/5hhu896g/1/

keyboardCharMap and keyboardNameMap are the key to making this work

আমাকে কিছু টাইপিং - এবং অনেক আবিষ্কার সাশ্রয় করার জন্য ডেভএলগারকে ধন্যবাদ! - নামযুক্ত কী অ্যারে সরবরাহ করে।


আপনার ফিডাল সবচেয়ে দুর্দান্ত! ভাগ করে নেওয়ার জন্য ধন্যবাদ. এটি দুর্দান্তভাবে কাজ করে। আমি একে একই মান সহ আইটেমগুলির সাথে ফর্ম ক্ষেত্রের জন্য সাব্লাইম-স্টাইলের মাল্টি-কার্সার সম্পাদনাটি প্রয়োগ করতে ব্যবহার করছি
টড হ্যামার

0

আমি সম্প্রতি একটি মডিউল নামক লিখেছেন keysight অনূদিত করে keypress, keydownএবং keyupঅক্ষর এবং কী মধ্যে ঘটনা যথাক্রমে।

উদাহরণ:

 element.addEventListener("keydown", function(event) {
    var character = keysight(event).char
 })

এটি কি keys এর মতো কী সমর্থন করে?
আর্নল্ড রোয়া

@ আর্নল্ডরোয়া আমি কেবল এমন কিছুকে ধাক্কা দিয়েছি আশা করি যে এর মতো চরিত্রগুলিকে সমর্থন করবে। উচ্চারণযুক্ত অক্ষরগুলির সাথে আমার কোনও কীবোর্ড নেই, তাই আপনি কি পরীক্ষা করতে মন চান?
বিটি

0

আপনারা যারা এখানে এসেছিলেন তাদের জন্য কীকোডের জন্য প্রকৃত ইউনিকোডের অক্ষরের মানগুলি সন্ধান করতে, যেমন আমি করেছি, তার জন্য এখানে একটি ফাংশন রয়েছে। উদাহরণস্বরূপ, ডান তীর ইউনিকোড কিকোড দেওয়া এটি দৃশ্যমান স্ট্রিংটিকে আউটপুট দেবে\u001B\u005B\u0043

function toUnicode(theString) {
    var unicodeString = '';
    for (var i = 0; i < theString.length; i++) {
        var theUnicode = theString.charCodeAt(i).toString(16).toUpperCase();
        while (theUnicode.length < 4) {
            theUnicode = '0' + theUnicode;
        }
        theUnicode = '\\u' + theUnicode;
        unicodeString += theUnicode;
    }
    return unicodeString;
}

0

আপনি কেবল পঠিত সম্পত্তি ব্যবহার করতে পারেন key। এটি shiftইত্যাদির মতো বিশেষ কীগুলিকেও সম্মান করে এবং আইই 9 দ্বারা এটি সমর্থন করে।

যখন একটি মুদ্রণযোগ্য নয় এমন বা বিশেষ অক্ষর টেপা হলে, মান সংজ্ঞায়িত হবে কী মান মত 'Shift'বা 'Multiply'

  • কীবোর্ড     event.key
  • X             -> 'x'
  • Shift+ X ->'X'
  • F5            -> 'F5'

-2

এই লিঙ্কটি কোনও কী কোডের জন্য কী প্রেস এবং চর মান থেকে কীকোড পান fer

$('input#inp').keyup(function(e){
   $(this).val(String.fromCharCode(e.keyCode)); 
   $('div#output').html('Keycode : ' + e.keyCode);  
});

1
এটি ভুল! যেহেতু এটি ব্যবহারকারীর কীবোর্ডে সক্রিয় ভাষা বর্তমান ভাষা বিবেচনা করে না। উদাহরণস্বরূপ, আমি 'ф'
লিখি

এটি ভুল, কীবোর্ড লেআউট অনুসারে পাঠ্য পরিবর্তন হবে
আর্নল্ড রোয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.