উত্তর:
কী টেপার ঘটনা শুধুমাত্র অক্ষরের জন্য প্রার্থনা করা হয় (মুদ্রণযোগ্য) কি, keydown ঘটনা সব সহ অমুদ্রণযোগ্য যেমন জন্য উত্থাপিত হয় Control, Shift, Alt, BackSpace, ইত্যাদি
হালনাগাদ:
কী টিপে চাপলে কিপ্রেস ইভেন্টটি বহিস্কার হয় এবং সেই কীটি সাধারণত একটি চরিত্রের মান তৈরি করে
keydown
পরিবর্তে চেষ্টা করুন keypress
।
কীবোর্ড ঘটনা এই আদেশ ঘটতে: keydown
, keyup
,keypress
ব্যাকস্পেসের সমস্যাটি সম্ভবত, ব্রাউজারটি আবার নেভিগেট করবে keyup
এবং এইভাবে আপনার পৃষ্ঠাটি keypress
ইভেন্টটি দেখতে পাবে না ।
keydown
keypress
keyup
। unixpapa.com/js/testkey.html
keyup
ইভেন্টটি সরিয়ে না দেওয়া পর্যন্ত চরিত্রটি মাঠে উপস্থিত হয় না ।
keydown
ইভেন্টে আগুন জ্বালিয়ে দেয় তবে এর পরে কিছুক্ষণ অবধি অক্ষরটি ইনপুট থেকে সরানো হয় না।
keypress
ঘটনা ব্রাউজারগুলি জুড়ে বিভিন্ন হতে পারে।
আমি ক্রোম এবং ফায়ারফক্সে কীবোর্ড ইভেন্টগুলি ( জিকুয়েরি শর্টকাট ব্যবহার করে) তুলনা করতে একটি জাসফিডেল তৈরি করেছি । আপনি যে keypress
ইভেন্টটি ব্রাউজারটি ব্যবহার করছেন তার উপর নির্ভর করে আপনি ইভেন্টটি ট্রিগার keydown/keypress/keyup
করা হবে বা না - ব্যাকস্পেস ফায়ারফক্সে ট্রিগার করবে তবে কেবল keydown/keyup
ক্রোমে।
ক্রোমে
keydown/keypress/keyup
যখন ব্রাউজার একটি কীবোর্ড ইনপুট নিবন্ধন করে ( keypress
বহিস্কার করা হয়)
keydown/keyup
যদি কোনও কীবোর্ড ইনপুট না থাকে (Alt, শিফট, ব্যাকস্পেস, তীর কীগুলির সাথে পরীক্ষিত)
keydown
শুধু ট্যাবের জন্য?
ফায়ারফক্সে
keydown/keypress/keyup
যখন ব্রাউজার একটি কীবোর্ড ইনপুট নিবন্ধন করে তবে ব্যাকস্পেস, তীর কী, ট্যাবের keypress
জন্যও (তাই এখানে কোনও ইনপুট না দিয়েও বহিস্কার করা হয়)
keydown/keyup
Alt জন্য, শিফট
এটি অবাক হওয়ার মতো নয় কারণ https://api.jquery.com/keypress/ অনুসারে :
দ্রষ্টব্য: কী টিপস ইভেন্টটি কোনও অফিসিয়াল স্পেসিফিকেশন দ্বারা আচ্ছাদিত নয়, এটি ব্যবহার করার সময় আসল আচরণটি ব্রাউজার, ব্রাউজার সংস্করণ এবং প্ল্যাটফর্মগুলিতে পৃথক হতে পারে।
কী-চাপড়ান ইভেন্ট প্রকারের ব্যবহারটি ডাব্লু 3 সি ( http://www.w3.org/TR/DOM-Level-3-Events/#event-type-keypress ) দ্বারা অবচয় করা হয়েছে
কিপ্রেস ইভেন্টের ধরণটি রেফারেন্স এবং সম্পূর্ণতার জন্য এই স্পেসিফিকেশনে সংজ্ঞায়িত করা হয় তবে এই স্পেসিফিকেশনটি এই ইভেন্টের ধরণের ব্যবহারকে হ্রাস করে। প্রসঙ্গ সম্পাদনা করার সময়, লেখকরা এর পরিবর্তে পূর্ববর্তী ইনপুট ইভেন্টটিতে সদস্যতা নিতে পারেন।
অবশেষে, আপনার প্রশ্নের উত্তর দেওয়ার জন্য আপনার ফায়ারফক্স এবং ক্রোম জুড়ে একটি ব্যাকস্পেস ব্যবহার করা উচিত keyup
বা keydown
এটি সনাক্ত করা উচিত ।
এখানে চেষ্টা করে দেখুন:
$(".inputTxt").bind("keypress keyup keydown", function (event) {
var evtType = event.type;
var eWhich = event.which;
var echarCode = event.charCode;
var ekeyCode = event.keyCode;
switch (evtType) {
case 'keypress':
$("#log").html($("#log").html() + "<b>" + evtType + "</b>" + " keycode: " + ekeyCode + " charcode: " + echarCode + " which: " + eWhich + "<br>");
break;
case 'keyup':
$("#log").html($("#log").html() + "<b>" + evtType + "</b>" + " keycode: " + ekeyCode + " charcode: " + echarCode + " which: " + eWhich + "<p>");
break;
case 'keydown':
$("#log").html($("#log").html() + "<b>" + evtType + "</b>" + " keycode: " + ekeyCode + " charcode: " + echarCode + " which: " + eWhich + "<br>");
break;
default:
break;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input class="inputTxt" type="text" />
<div id="log"></div>
আমি লিখে দিয়েছি এমন কিছু, যখনই কেউ ফর্মের ক্ষেত্রের মধ্যে রয়েছে এমন ভেবে লোকেরা ব্যাকস্পেসে আঘাত করে এমন সমস্যা আসে
window.addEventListener("keydown", function(e){
/*
* keyCode: 8
* keyIdentifier: "U+0008"
*/
if(e.keyCode === 8 && document.activeElement !== 'text') {
e.preventDefault();
alert('Prevent page from going back');
}
});
আমার সংখ্যার নিয়ন্ত্রণ:
function CheckNumeric(event) {
var _key = (window.Event) ? event.which : event.keyCode;
if (_key > 95 && _key < 106) {
return true;
}
else if (_key > 47 && _key < 58) {
return true;
}
else {
return false;
}
}
<input type="text" onkeydown="return CheckNumerick(event);" />
এটি চেষ্টা করুন
ব্যাকস্পেস কী কোডটি 8
আরও সাম্প্রতিক এবং অনেক ক্লিনার: ব্যবহার event.key
। আর যথেচ্ছ নম্বর কোড নেই!
note.addEventListener('keydown', function(event) {
const key = event.key; // const {key} = event; ES6+
if (key === "Backspace") {
// Do something
}
});
.key
বর্তমানে ডক্স দ্বারা প্রস্তাবিত বিকল্প। এছাড়াও, এটি কোনও প্রদত্ত কীটির জন্য বিভিন্ন ম্যাপিং সহ বিভিন্ন আন্তর্জাতিক কীবোর্ডকে সমর্থন করে। তারা স্থির হয়েছে এই অর্থে নির্বিচারে নয়, তারা কোড পড়ার সময় রয়েছে
পরিবর্তে কী-আপ / কীডাউন / ইনপুট ইভেন্টগুলির মধ্যে একটি ব্যবহার করুন।
এই রেফারেন্সের উপর ভিত্তি করে , কী-টিপস অবহেলা করা হয় এবং আর প্রস্তাবিত হয় না।
একটি অক্ষর মান তৈরি করে এমন কীটি নীচে চাপ দেওয়া হলে কিপ্রেস ইভেন্টটি বরখাস্ত করা হয়। অক্ষরের মান উৎপন্ন কীগুলির উদাহরণগুলি হ'ল বর্ণানুক্রমিক, সংখ্যাসূচক এবং বিরামচিহ্ন কীগুলি। অক্ষরের মান তৈরি করে না এমন কীগুলির উদাহরণগুলি হ'ল আল্ট, শিফট, সিটিআরএল বা মেটা হিসাবে সংশোধক কীগুলি।
আপনি যদি "পূর্বে ইনপুট" ব্যবহার করেন তবে ব্রাউজারের সামঞ্জস্যতা সম্পর্কে সতর্ক হন be । "পূর্ববর্তী ইনপুট" এবং অন্য দুটির মধ্যে পার্থক্য হ'ল ইনপুট মানটি পরিবর্তন হতে চলেছে যখন "প্রিয়ার ইনপুট" নিক্ষেপ করা হয়, সুতরাং যে অক্ষরগুলি ইনপুট মান পরিবর্তন করতে পারে না, তা বরখাস্ত করা হয় না (যেমন শিফট, সিটিআর, এলটি)।
আমার একই সমস্যা ছিল এবং কীআপ ব্যবহার করে এটি সমাধান করা হয়েছিল।
keypress
অনেকগুলি ব্রাউজারগুলিতে ঘটায় fire দেখুন unixpapa.com/js/key.html