onKeyPress বনাম। onKeyUp এবং onKeyDown


329

এই তিনটি ঘটনার মধ্যে পার্থক্য কী? গুগল করার পরে আমি এটি দেখতে পেলাম:

  • onKeyDownঘটনার সূত্রপাত যখন ব্যবহারকারী একটি কী presses করা হয়।
  • onKeyUpযখন ব্যবহারকারী একটি কী প্রকাশ ঘটনা সূত্রপাত হয়।
  • onKeyPressঘটনার সূত্রপাত হয় যখন ব্যবহারকারী ছাপাখানা ও রিলিজ একটি কী ( onKeyDownদ্বারা অনুসরণ onKeyUp)।

আমি প্রথম দুটি বুঝতে পারি, তবে onKeyPressএকইরকম নয় onKeyUp? কী ( onKeyUp) টিপুন না করে ( onKeyDown) চাপানো সম্ভব ?

এটি কিছুটা বিভ্রান্তিকর, কেউ কি আমার জন্য এটি পরিষ্কার করতে পারেন?


3
আমি দেখতে পেলাম যে আমি যদি টিএবি কী ধরে রাখি তবে এটি সমস্ত ক্ষেত্রকে অবিচ্ছিন্নভাবে চক্র করে এবং কেবল 'অনকিডাউন' চালিত করে।
এভেরেস্ট

23
কিপ্রেস ইভেন্ট টাইপ করা এমন একটি চরিত্রের প্রতিনিধিত্ব করে যা ইনপুট জন্য ব্যবহার করা যেতে পারে, যেমন 'এ', 'ডি', '£', '©', এবং আরও কিছু। অন্যদিকে, কীডাউন এবং কীআপ ইভেন্টগুলি যে কোনও কী কী টাইপ করা হচ্ছে তা উপস্থাপন করে, যার মধ্যে ব্যাকস্পেস, ট্যাব, আপ, ডাউন, হোম, এন্ড ইত্যাদি জাতীয় জিনিস রয়েছে।
skcin7

2
"(বা এটি কী (কীডাউন) টিপুন না করে কী (কীআপ) প্রকাশ করা সম্ভব?)" - হ্যাঁ। উদাহরণস্বরূপ, ট্যাব কী: কীআপ ইভেন্টটি কীডাউন হিসাবে একই উপাদান দ্বারা ক্যাপচার করা যাবে না।
স্বয়ং তিনিই প্রকাশমান

উত্তর:


191

এই উত্তরে মূলত ব্যবহৃত সংরক্ষণাগারযুক্ত লিঙ্কটি এখানে দেখুন ।

সেই লিঙ্ক থেকে:

তত্ত্ব অনুসারে, onKeyDownএবং onKeyUpইভেন্টগুলি কীগুলি টিপে বা প্রকাশিত হওয়ার উপস্থাপন করে, যখন onKeyPressইভেন্টটি টাইপ করা একটি চরিত্রের প্রতিনিধিত্ব করে। সমস্ত ব্রাউজারে তত্ত্বটির প্রয়োগ এক নয়।


18
আইডিয়োসিনক্র্যাসিগুলি (jquery ব্যবহার করে) প্রদর্শনের জন্য @ ফালকের পোস্টের উপর ভিত্তি করে একটি জেসফিল্ড একসাথে রাখুন: jsfiddle.net/zG9MF/2
ফোরডারেহ

আমি লিঙ্কযুক্ত পৃষ্ঠাটি দেখতে পাচ্ছি না তবে আপনি যদি কোনও ধরণের বৈধতার জন্য এটি ব্যবহার করার পরিকল্পনা করেন তবে 'একটি চরিত্র টাইপ হচ্ছে' সে সম্পর্কে পয়েন্টটি গুরুত্বপূর্ণ one ব্যবহারকারী কোনও অক্ষর মুছে ফেললে কিপ্রেস ইভেন্টটি আগুন দেয় না , সুতরাং আপনার বৈধতাটি আগুনে না।
টনি মেরিফিল্ড

@ টনি মেরিফিল্ড - লিঙ্কটি আমার পক্ষে ভাল কাজ করছে, আমি এটি আবার পরীক্ষা করে দেখেছি।
ডিসিপি

1
@ ডিসিপি - হ্যাঁ, আমাকে সঠিক পথে আনার জন্য ইঙ্গিতটি যথেষ্ট ছিল। আমি কেবলমাত্র আমার বক্তব্যটি শক্তিশালী করার জন্য যুক্ত করেছি যে ইভেন্টটি কেবল তখনই ট্রিগার হয় যখন কোনও চরিত্রের জন্য কোনও কিপ্রেসের বিপরীতে টাইপ করা হয় - আপনি আমার উত্সাহ পেয়েছিলেন;)
টনি মেরিফিল্ড

1
এছাড়াও, একটি কী'র "দীর্ঘ" প্রেসে, কীডাউন ইভেন্টটি চাবিটি প্রকাশ না হওয়া অবধি গুলি চালিয়ে যায়, এই ক্ষেত্রে কীইউপি কেবল একবার চালিত হয়;)
আইটি

195

KeyPress, KeyUpএবং KeyDownথেকে যথাক্রমে অনুরূপ আছেন: Click, MouseUp,এবং MouseDown

  1. Down প্রথম ঘটে
  2. Press দ্বিতীয় হয় (পাঠ্য প্রবেশ করা হয়)
  3. Up সর্বশেষে ঘটে (যখন পাঠ্য ইনপুট সম্পূর্ণ হয়)।

ব্যতিক্রম হ'ল ওয়েবকিট , সেখানে একটি অতিরিক্ত ইভেন্ট রয়েছে:

keydown
keypress
textInput     
keyup

নীচে একটি স্নিপেট রয়েছে যখন আপনি ইভেন্টগুলি চালিত হওয়ার জন্য নিজের জন্য দেখতে ব্যবহার করতে পারেন:

window.addEventListener("keyup", log);
window.addEventListener("keypress", log);
window.addEventListener("keydown", log);

function log(event){
  console.log( event.type );
}


1
সুতরাং, কীপ্রেস কি কেবল একটি অতিরিক্ত ইভেন্ট যা বি / ডাব্লু কীডাউন এবং টেক্সট ইনপুট? এটি কী (কী প্রেস) সাধারণত বিকাশকারীরা ব্যবহার করেন?
ইনস্ট্যান্টসেটসুন

78
+1 সেরা উত্তর - প্রথমে * ডাউন হয়, * প্রেসটি দ্বিতীয় ঘটে (যখন পাঠ্য প্রবেশ করা হয়), এবং * আপটি শেষ হয় (যখন পাঠ্য ইনপুট সম্পূর্ণ হয়)।
স্কট পেলাক

2
-1 কারণ স্নিপেটে সামান্য পরীক্ষা-নিরীক্ষা 'ক্লিক' ইভেন্টের সাথে আপনার সাদৃশ্যটির বিরোধিতা করে। 'ক্লিক' ইভেন্টটি একই সাথে 'মাউসআপ' (যখন আপনি মাউস বোতামটি ছেড়ে দেবেন) হিসাবে জ্বলিত হয় তবে 'কীপ্রেস' ইভেন্টটি একই সাথে 'কীডাউন' (যখন কীটি প্রথম হতাশাগ্রস্থ হয়) হিসাবে জ্বলজ্বল করে।
মার্ক আমেরিকা

2
@ রোবস্তো আসলে, keypressএবং keydownইভেন্টগুলি আক্ষরিক অর্থে একই .timeStampমান নির্ধারিত হয় যা 5 টি মাইক্রোসেকেন্ডের অন্তরগুলির সাথে সঠিক, তবে যাইহোক এটি আসলে আমার বক্তব্য নয়। আমার বক্তব্যটি হ'ল clickআপনি মাউস বোতামটি প্রকাশ না করা পর্যন্ত ইভেন্টটি আগুন দেয় না , সুতরাং এটির keypressকীবোর্ড সংস্করণটি clickএটির মতো শব্দ করে তোলে keypressযতক্ষণ না আপনি কীটি প্রকাশ না করেন ততক্ষণ আগুন জ্বলবে না । আসলে, ঘটনাটি নয়: চাবিটি হতাশাগ্রস্ত হলে ঠিক সেভাবেই আগুন ধরে যায় keydown। তাই keypressআসলে অনুরূপ নয় clickএ সব।
মার্ক আমেরিকা

2
@ রবস্টো "কী কীড্রেস " এর পরে সর্বদা 'কীপ্রেস' রেকর্ড করা হচ্ছে তা আপনি কীভাবে ব্যাখ্যা করবেন - সহজ: একই ব্যবহারকারীর ক্রিয়া (একটি কী চাপিয়ে দেওয়া) তত্ক্ষণাত উভয় হ্যান্ডলারের ইভেন্ট ইভেন্টে সজ্জিত করার জন্য ট্রিগার করে, তবে একটি স্থির ক্রমে । "আপনি কেবল যুক্তির পক্ষে যুক্তি রাখতে চান" - এহ? আপনার উত্তর কোর থিসিস যে keypress, keyupএবং keydownঅনুরূপ হয় click, mouseupএবং mousedown। আমার কাছে এর প্রাকৃতিক ব্যাখ্যাটি হ'ল keypressসেই একই সাথে তাত্ক্ষণিকভাবে আগুন লাগে keyup(ঠিক যেমন clickএবং mouseup)। কি হয়নি আপনি কি বলতে চান, না যে তাহলে কি হবে?
মার্ক আমেরিকা

23

এখানে বেশিরভাগ উত্তরগুলি ব্যবহারিক বিষয়ের চেয়ে তত্ত্বের দিকে বেশি আলোকপাত করে এবং এর মধ্যে কিছুটা বড় পার্থক্য রয়েছে keyupএবং keypressএটি অন্তত ফায়ারফক্সে (43 এ পরীক্ষিত) ইনপুট ক্ষেত্রের মানগুলির সাথে সম্পর্কিত।

যদি ব্যবহারকারী 1খালি ইনপুট উপাদানটিতে টাইপ করে থাকে:

  1. ইনপুট উপাদানটির মান keypressহ্যান্ডলারের ভিতরে একটি খালি স্ট্রিং (পুরানো মান) হবে

  2. ইনপুট উপাদানটির 1মান keyupহ্যান্ডলারের অভ্যন্তরে (নতুন মান) হবে ।

আপনি যদি এমন কিছু করছেন যা বর্তমান মূল্য যেমন ইনলাইন বৈধতা বা স্বয়ংক্রিয় ট্যাবিংয়ের পরিবর্তে ইনপুটটির পরে নতুন মান জানার উপর নির্ভর করে তবে এটি অত্যন্ত গুরুত্বপূর্ণ।

দৃশ্যপট:

  1. ব্যবহারকারী 12345একটি ইনপুট উপাদান মধ্যে টাইপ ।
  2. ব্যবহারকারী পাঠ্য নির্বাচন করে 12345
  3. ব্যবহারকারী চিঠিটি টাইপ করে A

keypressচিঠিটি প্রবেশের পরে যখন ঘটনাটি ছড়িয়ে পড়ে Aতখন পাঠ্য বাক্সে কেবলমাত্র অক্ষর থাকে A

কিন্তু:

  1. মাঠ.ভাল () 12345
  2. Eld মাঠ.ভাল () দৈর্ঘ্য 5
  3. ব্যবহারকারীর নির্বাচনটি একটি খালি স্ট্রিং (নির্বাচনটি ওভাররাইট করে কী মুছে ফেলা হয়েছে তা নির্ধারণ করা থেকে বিরত)।

তাই মনে হচ্ছে যে ব্রাউজার (ফায়ারফক্স 43) ব্যবহারকারীর নির্বাচন মুছে যাবে, তারপর আগুন keypressঘটনা, তারপর আপডেট ক্ষেত্র বিষয়বস্তু, তারপর আগুন keyup


16

onkeydownযখন কী (ডাউন শর্টকাট মত বহিস্কার করা হয়; উদাহরণস্বরূপ, মধ্যে Ctrl+A, Ctrlঅনুষ্ঠিত হয় 'নিচে'।

onkeyup কীটি প্রকাশিত হলে বহিষ্কার করা হয় (সংশোধক / ইত্যাদি কী সহ)

onkeypressএর সংমিশ্রণ হিসাবে onkeydownএবং onkeyup, বা কীবোর্ড পুনরাবৃত্তির উপর নির্ভর করে (যখন onkeyupবরখাস্ত করা হয় না) বরখাস্ত করা হয়। (এই পুনরাবৃত্তি আচরণ এমন কিছু যা আমি পরীক্ষা করি নি you আপনি যদি পরীক্ষা করেন তবে একটি মন্তব্য যুক্ত করুন!)

textInput(কেবলমাত্র ওয়েবকিট) নথিভুক্ত করা হয় যখন কিছু পাঠ্য প্রবেশ করা হয় (উদাহরণস্বরূপ, Shift+Aবড় হাতের 'ক' এ প্রবেশ করবে, তবে Ctrl+Aপাঠ্য নির্বাচন করবে এবং কোনও পাঠ্য ইনপুট প্রবেশ করবে না that সেক্ষেত্রে, অন্যান্য সমস্ত ইভেন্টগুলি বরখাস্ত করা হয়)


1
কেবলমাত্র নিশ্চিত হয়ে গেছে যে, কীটি চেপে ধরে রাখলে "onkeypress" বারবার বলা হয় এবং "কীবোর্ড পুনরাবৃত্তি" ঘটে। তবে এটি "অনকিডাউন" এর ক্ষেত্রেও সত্য! (যা অপ্রত্যাশিত, নাম দেওয়া হয়েছে)
ভেন্রিক্স

11

প্রথমত, এর আলাদা অর্থ রয়েছে: তারা গুলি চালায়:

  • কীডাউন - যখন একটি কী চাপানো হয়
  • Keyup - যখন একটি ধাক্কা বোতাম ছিল মুক্তি , এবং পরে ইনপুটের মান / পাঠ্য এলাকা আপডেট করা হয় (শুধুমাত্র এঁদের মধ্যে একটি)
  • কীপ্রেস - এর মধ্যে এবং এর অর্থ এই নয় যে কোনও চাবি ধাক্কা দিয়ে ছেড়ে দেওয়া হয়েছিল (নীচে দেখুন)।

দ্বিতীয়ত, কিছু কীগুলি এই ইভেন্টগুলিতে কিছু জ্বালিয়ে দেয় এবং অন্যগুলিকে গুলি করে না । এই ক্ষেত্রে,

  • কী টেপার উপেক্ষা delete, তীর, PgUp/ PgDn, home/ end, ctrl, alt, shiftইত্যাদি যখন keydown এবং keyup না (সম্পর্কে বিস্তারিত দেখতে পাচ্ছ escনিচে);
  • আপনি যখন উইন্ডোতে alt+ tabএর মাধ্যমে উইন্ডোটি স্যুইচ করেন , কেবল altআগুনের জন্য কীডাউন হয় কারণ অন্য কোনও ইভেন্টের আগে উইন্ডো স্যুইচিং ঘটে (এবং এর জন্য কীডাউন tabসিস্টেম দ্বারা প্রতিরোধ করা হয়েছে, আমি মনে করি, কমপক্ষে ক্রোম 71 এ)।

এছাড়াও, আপনার মনে রাখতে হবে যে event.keyCode(এবং event.which) সাধারণত কীডাউন এবং কীআপের জন্য একই মান থাকে তবে কীপ্রেসের জন্য আলাদা আলাদা মান থাকে। আমি তৈরি খেলার মাঠ চেষ্টা করুন । যাইহোক, আমি বেশ কৌতূহল লক্ষ্য করেছি: ক্রোমে যখন আমি ctrl+ টিপছি aএবং input/ textareaখালি খালি তখন কিপ্রেস event.keyCode(এবং event.which) এর সমান অগ্নিকান্ডের জন্য 1! (যখন ইনপুটটি খালি নয়, এটি মোটেও আগুন দেয় না)।

শেষ অবধি কিছু বাস্তববাদ রয়েছে :

  • তীরগুলি পরিচালনা করার জন্য আপনাকে সম্ভবত অনি কেডাউন ব্যবহার করতে হবে: ব্যবহারকারী যদি ধরে রাখেন , কীডাউন বেশ কয়েকবার গুলি চালায় (যখন কী ইউপি যখন বোতামটি ছেড়ে দেয় কেবল তখনই এটি ফায়ার করে)। এছাড়াও, কিছু কিছু ক্ষেত্রে আপনি সহজেই কীডাউনের প্রচার প্রতিরোধ করতে পারেন তবে কীআপের প্রচার (বা এটি সহজে পারেন না) আটকাতে পারবেন না (উদাহরণস্বরূপ, আপনি যদি পাঠ্য ক্ষেত্রে নতুন লাইন যুক্ত না করে এন্টারে জমা দিতে চান)।
  • চমকপ্রদভাবে, যখন আপনি কোনও কী ধরে রাখেন, তখন কী textareaপ্রেস এবং কীডাউন উভয়ই একাধিকবার (ক্রোম 71) আগুন দিয়ে বলুন, আমি যদি একাধিকবার এবং একক কী রিলিজের জন্য কীআপ ব্যবহার করে এমন ইভেন্টের প্রয়োজন হয় তবে আমি কীডাউন ব্যবহার করব
  • আপনি যখন তাদের ক্রিয়াকলাপে আরও ভাল প্রতিক্রিয়া জানাতে হয় তখন কীডাউন গেমসের জন্য সাধারণত ভাল।
  • escসাধারণত কীডাউনের মাধ্যমে প্রক্রিয়াজাত করা হয়: কীপ্রেস inputগুলি চালায় না এবং কীআউপি textareaবিভিন্ন ব্রাউজারে এস এবং এসগুলির জন্য আলাদা আচরণ করে (বেশিরভাগ ফোকাস হ্রাসের কারণে)
  • আপনি যদি সামগ্রীর সাথে কোনও পাঠ্যের ক্ষেত্রের উচ্চতা সামঞ্জস্য করতে চান তবে আপনি সম্ভবত কীডাউন ব্যবহার করবেন না তবে অন কীপ্রেস ( পিএস ঠিক আছে, এই ক্ষেত্রে অন চেঞ্জ ব্যবহার করা ভাল )।

আমি আমার প্রকল্পে সমস্ত 3 ব্যবহার করেছি তবে দুর্ভাগ্যক্রমে কিছু বাস্তববাদ ভুলে গিয়ে থাকতে পারে। (লক্ষণীয়: এছাড়াও রয়েছে inputএবং changeঘটনাগুলি)


আমি কী-আপ ফিল্ডের বিষয়বস্তুগুলিতে নতুন লাইন যুক্ত করার কথা ভাবি নি, তবে এটি আসলে গুরুত্বপূর্ণ।
এফকেইন্টারনেট

10

জ্যান ওল্টারের এই নিবন্ধটি আমি যে সেরা টুকরাটি পেয়েছি তা হ'ল লিঙ্কটি মারা গেলে আপনি এখানে সংরক্ষণাগারভুক্ত অনুলিপিটি পেতে পারেন।

এটি সমস্ত ব্রাউজার কী ইভেন্টগুলি সত্যিই ভালভাবে ব্যাখ্যা করে,

Keydown ঘটনা ঘটে যখন চাবি টেপা না হলে, কী টেপার ঘটনা দ্বারা অবিলম্বে অনুসরণ করে। তারপরে কীটি প্রকাশিত হলে কীআপ ইভেন্টটি তৈরি করা হয়।

মধ্যে পার্থক্য বুঝতে পারা keydown এবং কীপ্রেস , এটা মধ্যে পার্থক্যটা গুরুত্বপূর্ণ অক্ষর এবং কী । একটি কী কম্পিউটারের কীবোর্ডের একটি শারীরিক বোতাম। একটি অক্ষর একটি প্রতীক যা বোতাম টিপে টাইপ করা হয়। একটি মার্কিন কীবোর্ডে, 4কীটি ধরে রাখার সময় কীটি হিট করলে Shiftসাধারণত একটি "ডলার সাইন" অক্ষর তৈরি হয়। এটি অগত্যা বিশ্বের প্রতিটি কীবোর্ডের ক্ষেত্রে হয় না। ধারণায়, keydown এবং keyup ঘটনা, কি টেপা বা মুক্তি প্রতিনিধিত্ব যখন কীপ্রেসইভেন্ট টাইপ করা একটি চরিত্র প্রতিনিধিত্ব করে। বাস্তবে, এটি সর্বদা কার্যকর হয় না।

কিছুদিনের, কিছু browers একটি অতিরিক্ত ঘটনা বলা বহিস্কার textInput অবিলম্বে পরে, কী টেপার । করে DOM 3 মান প্রারম্ভিক সংস্করণের জন্য একটি প্রতিস্থাপন হিসাবে এই উদ্দেশ্যে কীপ্রেস ঘটনা, কিন্তু পুরো ধারণা পরে প্রত্যাহার করা হয়েছে। ওয়েবকিট এটি 525 এবং 533 সংস্করণের মধ্যে সমর্থন করেছে এবং আমি IE এটি সমর্থন করে বলেছি, তবে আমি কখনই এটি সনাক্ত করতে পারি নি, সম্ভবত কারণ ওয়েবকিটকে এটি পাঠ্য ইনপুট বলা দরকার যখন আইই এটি পাঠ্য ইনপুট বলে

ইনপুট নামে একটি ইভেন্টও রয়েছে, যা সমস্ত ব্রাউজার দ্বারা সমর্থিত হয়, যা কোনও টেক্সারিয়া বা ইনপুট ক্ষেত্রে পরিবর্তন করার ঠিক পরে চালিত হয় । সাধারণত কী চাপলে আগুন জ্বলে উঠবে, তারপরে টাইপ করা অক্ষরটি পাঠ্য অঞ্চলে উপস্থিত হবে, তারপরে ইনপুটটি আগুন জ্বালাবে। ইনপুট ঘটনা আসলে কি কী টাইপ করা হয়েছে সেই সম্পর্কে কোন তথ্য দেয় না - আপনি পাঠ্যবাক্স পরিদর্শন করা এটা চিন্তা করার কি কি পরিবর্তন আছে চাই - তাই আমরা সত্যিই এটা একটি কী ঘটনা বিবেচনা করা হয় না এবং সত্যিই তা এখানে নথি না । যদিও এটি মূলত কেবল টেক্সারিয়াস এবং ইনপুট বাক্সের জন্যই সংজ্ঞায়িত হয়েছিল, তবে আমি বিশ্বাস করি যে এটি অন্যান্য ধরণের জিনিসগুলিতেও আগুন লাগানোর দিকে কিছুটা আন্দোলন করেছে।


সেরা উত্তর, সুতরাং কীভাবে আপনি কীভাবে বলতে পারেন, কীপ্রেস থেকে ডলারের চিহ্ন প্রতীক?
নীলজাইকে

10

মনে হয় অন্ক্রিপস এবং অনকিডাউন একই কাজ করে (উপরে উল্লিখিত শর্টকাট কীগুলির ছোট পার্থক্য সহ)।

আপনি এটি চেষ্টা করতে পারেন:

<textarea type="text" onkeypress="this.value=this.value + 'onkeypress '"></textarea>
<textarea type="text" onkeydown="this.value=this.value + 'onkeydown '" ></textarea>
<textarea type="text" onkeyup="this.value=this.value + 'onkeyup '" ></textarea>

এবং আপনি দেখতে পাবেন যে কীটি টিপে থাকাকালীন কীগুলি টিপানোর সময় ওঙ্কপ্রেস এবং অনকিডাউন উভয়ই ট্রিগার করা হয়।

পার্থক্যটি হ'ল ইভেন্টটি একবারে নয় বরং বহুবার ট্রিগার করা হয় (যতক্ষণ না আপনি কী টিপেন ততক্ষণ)। সে সম্পর্কে সচেতন হন এবং সেই অনুযায়ী তাদের পরিচালনা করুন।


সিআরটিএল, শিফট, ক্যাপসলক, ব্যাকস্পেস এবং অন্যান্য কীগুলি যা কিছু টাইপ করে না তাkeypress ইভেন্টের কারণ হয় না , তবে তারা সর্বদা একটি ট্রিগার করে keydown
সিপিএইচপিথন

8

অ্যানকিপ্রেস ইভেন্টটি সমস্ত ব্রাউজারগুলিতে ALT, CTRL, SHIFT, ESC ব্যতীত সমস্ত কীগুলির জন্য কাজ করে যেখানে অনকিডাউন ইভেন্টটি সমস্ত কীগুলির জন্য কাজ করে। মানে অনকিডাউন ইভেন্ট সমস্ত কীগুলি ক্যাপচার করে।


কীপ্রেস মুছে ফেলুন, তীরগুলি, বাড়ি / শেষ, পিজইউপি / পিজিএন উপেক্ষা করে, বিশদর জন্য আমার উত্তর দেখুন (আপনি নিজের উত্তরও আপডেট করতে চাইতে পারেন)
ইয়াকোভএল

4

শুধু একটি কৌতুহল ভাগ করতে চেয়েছিলেন:

জেএস পদ্ধতিটি সক্রিয় করতে অনকিডাউন ইভেন্টটি ব্যবহার করার সময়, সেই ইভেন্টের চারকোডটি আপনি অ্যানকিপ্রেসের সাথে যেভাবে পান তেমন নয়!

উদাহরণস্বরূপ, নামপ্যাড কীগুলি অনকাইপ্রেস ব্যবহার করার সময় অক্ষর কীগুলির উপরে নম্বর কীগুলির মতো একই চারকোডগুলি ফেরত দেবে, তবে অনকিডাউন ব্যবহার করার সময় নয়!

অনকিডাউন ব্যবহারের সময় নির্দিষ্ট স্কোরকডগুলির জন্য পরীক্ষা করা আমার স্ক্রিপ্টটি কেন ব্যর্থ হয়েছিল তা নির্ধারণ করতে আমাকে বেশ কয়েক সেকেন্ড সময় নিয়েছিল!

ডেমো: https://www.w3schools.com/code/tryit.asp?filename=FMMBXKZLP1MK

এবং হ্যাঁ. আমি জানি যে পদ্ধতিগুলির সংজ্ঞাটি আলাদা .. ঘোষিত বাস্তবায়ন


দেখা যাচ্ছে যে 0123456789
সংখ্যাগুলিক

এবং আপনি কি লক্ষ্য করেছেন যে কীডাউন কিবোর্ডে কেই দেয়, যখন কীপ্রেস সঠিক সারণিটি দেয় যা আমরা সবে টাইপ করেছি (বা ক্লিক করেছেন)
মৃগাঙ্ক পাবাগী

2

মূলত, এই ইভেন্টগুলি বিভিন্ন ব্রাউজারের ধরণ এবং সংস্করণে আলাদাভাবে কাজ করে, আমি একটু জেএসবিন পরীক্ষা তৈরি করেছিলাম এবং আপনার লক্ষ্যযুক্ত পরিবেশের জন্য এই ইভেন্টগুলি কীভাবে আচরণ করে তা জানতে আপনি কনসোলটি পরীক্ষা করতে পারেন, এই সহায়তার আশা করি। http://jsbin.com/zipivadu/10/edit


1

আপডেট উত্তর:

keydown

  • আপনি কীগুলি ধরে রাখলে একাধিকবার গুলি চালায়।
  • আগুন মেটা কী।

কী প্রেস

  • আপনি কীগুলি ধরে রাখলে একাধিকবার গুলি চালায়।
  • না না মেটা কী-আগুন।

keyup

  • আপনি কীটি রিলিজ করার পরে একবারে আগুন জ্বলে ।
  • আগুন মেটা কী।

উভয় addEventListenerএবং এই আচরণ jQuery

https://jsbin.com/vebaholamu/1/edit?js,console, আউটপুট <- চেষ্টা করে দেখুন

এসএসএসের জন্য চেপে ধরে উদাহরণ দেখায়

(উত্তরটি সঠিক প্রতিক্রিয়া, স্ক্রিনশট এবং উদাহরণ সহ সম্পাদনা করা হয়েছে)


কীডাউন বাদে একাধিকবার গুলি
ছোঁড়ে

-1, কারণ এটি সম্পর্কে কমপক্ষে একটি বিবরণ কমপক্ষে ক্রমে ভুল wrong যেমনটি ব্লুজেয়েকে বলেছেন, আপনি কী ধরে রাখলে কীডাউন বারবার গুলি চালায়।
মার্ক আমেরিকা

হ্যাঁ আপনারা ঠিক বলেছেন, আমার ভুলের জন্য দুঃখিত; উত্তর সম্পাদিত।
কোয়াং ভ্যান

0

কয়েকটি বাস্তব তথ্য যা কোন ইভেন্টটি পরিচালনা করতে হবে তা সিদ্ধান্ত নিতে কার্যকর হতে পারে (নীচের স্ক্রিপ্টটি চালনা করুন এবং ইনপুট বাক্সটিতে ফোকাস করুন):

$('input').on('keyup keydown keypress',e=>console.log(e.type, e.keyCode, e.which, e.key))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input/>

টিপলে:

  • সন্নিবেশ / টাইপ কীগুলি (যেমন Shift, Ctrl) ট্রিগার করবে না a keypress। এটি টিপুন Ctrlএবং ছেড়ে দিন:

    কীডাউন 17 17 নিয়ন্ত্রণ

    কীআপ 17 17 নিয়ন্ত্রণ Control

  • অন্যান্য অক্ষরগুলিতে অক্ষর রূপান্তরকরণ প্রয়োগ করে এমন কী-বোর্ডগুলির কীগুলি মৃত এবং ডুপ্লিকেট "কী" (যেমন ~, ´) অন্বেষণ করতে পারে keydown´ডাবল প্রদর্শনের জন্য এটি টিপুন এবং ছেড়ে দিন ´´:

    কীডাউন 192 192 মারা গেছে

    কীডাউন 192 192 ´´

    কিপ্রেস 180 180 ´

    কিপ্রেস 180 180 ´

    কীআপ 192 192 মারা গেছে

অতিরিক্তভাবে, <input type="range">টাইপবিহীন ইনপুটগুলি (যেমন রেঞ্জযুক্ত) এখনও টিপস কী অনুসারে সমস্ত কীআপ, কীডাউন এবং কী-চাপ ইভেন্টগুলিকে ট্রিগার করবে।

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