খাঁটি জেএস বা জিক্যুয়ারি দিয়ে কীভাবে এস্কেপ কী প্রেস সনাক্ত করা যায়?


524

সম্ভাব্য সদৃশ:
jQuery এর সাথে পালানোর কীটির জন্য কী কী কোড

আইই, ফায়ারফক্স এবং ক্রোমে কীভাবে এস্কেপ কী প্রেসগুলি সনাক্ত করা যায়? নীচে কোড আইই এবং সতর্কতাগুলিতে কাজ করে 27তবে ফায়ারফক্সে এটি সতর্ক করে0

$('body').keypress(function(e){
    alert(e.which);
    if(e.which == 27){
        // Close my modal window
    }
});

1
প্রথমে কিছু ব্রাউজার শনাক্ত করতে পারি?
আইএনএ

7
কোন ব্রাউজারে কি কাজ করে তা সন্ধান করতে আমি quirksmode.org সর্বদা নির্ভরযোগ্য খুঁজে পাই: quirksmode.org/js/keys.html । আপনি যে শুধুমাত্র আছে জানতে পারেন keyupবা keydownসঙ্গে সমন্বয় keyCodeসব ব্রাউজারে কাজ করে।
ফেলিক্স ক্লিং

1
আমি মনে করি এই প্রশ্নের শিরোনাম হওয়া উচিত "jquery দিয়ে কীভাবে পালাতে কী কী আবিষ্কার করতে হবে?" বা উত্তর নেটিভ জাভাস্ক্রিপ্ট থাকা উচিত ...
উইল্ট

3
$(document).on("keyup", function (e) {var code = e.keyCode || e.which; alert('key pressed: ' + code);});2014 এর পক্ষ থেকে শুভেচ্ছা
ক্লে এইচ। ভারভাস

উত্তর:


957

নোট: keyCodeহয় অননুমোদিত পেয়ে ব্যবহার keyপরিবর্তে।

function keyPress (e) {
    if(e.key === "Escape") {
        // write your logic here.
    }
}

এখানে jsfiddle


keyCode হ্রাস করা হচ্ছে

এটি মনে হয় keydownএবং keyupকাজ করে, যদিও keypressনাও পারে


$(document).keyup(function(e) {
     if (e.key === "Escape") { // escape key maps to keycode `27`
        // <DO YOUR WORK HERE>
    }
});

JQuery এর সাথে পালানোর কীটির জন্য কী কী কোড


11
আনবাইন্ড করতে: $ (ডকুমেন্ট) .উনবাইন্ড ("কীআপ", কীআপ ফানক);
প্লাটসি

54
আনবাইন্ড করতে আপনি এই ইভেন্টে একটি নেমস্পেস ব্যবহার করতে পারেন $(document).on('keyup.unique_name', ...)এবং$(document).unbind('keyup.unique_name')
লাচলান ম্যাকডি।

9
কোন কী টিপেছে তা পরীক্ষা করার জন্য e. which (e.keycode এর পরিবর্তে) ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। jQuery কীকোড এবং চারকোডকে স্বাভাবিক করে তোলে (পুরানো ব্রাউজারগুলিতে ব্যবহৃত হয়)
ডিএমটিটনার

1
@DMTintner: একই বিষয়ে, মন্তব্য জর্ডান Brough দ্বারা বাম দেখতে stackoverflow.com/a/1160109/759452
Adrien হউন

8
আপনার সর্বদা ব্যবহার করা উচিত ===
প্যান্ডেল

210

keydownঘটনা এস্কেপ জন্য সূক্ষ্ম কাজ এবং আপনি ব্যবহার করার অনুমতি সুবিধা রয়েছে করবে keyCodeসব ব্রাউজারে। এছাড়াও, আপনাকে শ্রোতার documentশরীরের চেয়ে সংযুক্ত করতে হবে ।

আপডেট মে 2016

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

আপডেট সেপ্টেম্বর 2018 evt.key এখন সমস্ত আধুনিক ব্রাউজার দ্বারা সমর্থিত।

document.onkeydown = function(evt) {
    evt = evt || window.event;
    var isEscape = false;
    if ("key" in evt) {
        isEscape = (evt.key === "Escape" || evt.key === "Esc");
    } else {
        isEscape = (evt.keyCode === 27);
    }
    if (isEscape) {
        alert("Escape");
    }
};
Click me then press the Escape key


3
দ্রষ্টব্য, আপনি শ্রোতাদের একটি <input>উপাদানের সাথেও যুক্ত করতে পারেন এবং তাই এই উপাদানটির ফোকাস থাকলেই এটি ট্রিগার করা হবে।
মাইক 1 ই

1
@ রনমোকি: এটি কী ধরণের উপাদান (আইডি পরীক্ষার সাথে একটি)? কেবলমাত্র ফাংশন (ফর্ম ইনপুট, বিতর্কিত উপাদান, ট্যাবিনডেক্স সেট সহ উপাদানগুলি) ফায়ার কী ইভেন্টগুলিতে সক্ষম এমন উপাদানগুলি।
টিম ডাউন

1
if (evt.key === 'Escape') {keyCode
অবহেলিত

1
@ টোবাইম্যাকেনজি: তাই তাই। এটা কি দুর্দান্ত? মান ভিত্তিক ওয়েব বিকাশের সাহসী নতুন জগতে স্বাগতম।
টিম ডাউন

1
আপনাকে জানতে হবে যদি আপনি নিরাপদে ব্যবহার করতে পারেন চান .key, দেখুন caniuse.com/#feat=keyboardevent-key
জ্যাসপার ডি Vries

37

জাভাস্ক্রিপ্ট ব্যবহার করে আপনি কাজকর্ম jsfiddle চেক করতে পারেন

document.onkeydown = function(evt) {
    evt = evt || window.event;
    if (evt.keyCode == 27) {
        alert('Esc key pressed.');
    }
};

JQuery ব্যবহার করে আপনি কাজকর্ম jsfiddle চেক করতে পারেন

jQuery(document).on('keyup',function(evt) {
    if (evt.keyCode == 27) {
       alert('Esc key pressed.');
    }
});

17

জন্য চেক keyCode&& which& keyup||keydown

$(document).keydown(function(e){
   var code = e.keyCode || e.which;
   alert(code);
});

আমি দেখছি এটি কাজ করছে না, jsfiddle.net/GWJVt কেবল পালানোর জন্য ... বিশ্রী মনে হচ্ছে?
রিগেল

document (ডকুমেন্ট.বিডি) .কাইপ্রেস () গুলি চালাচ্ছে না
মিথুন শ্রদ্ধারন

@ রিগেল: বাস্তবে, কীপ্রেসের সাথে সঠিকভাবে কাজ করা হচ্ছে না বলে মনে হচ্ছে। যাই হোক না কেন, আমি 'বিশ্রী' অংশটি অনুমান করতে পারি না।
জানুয়ারি

3
কী টিপলে অক্ষর কীগুলি (কীডাউন এবং কীআপের বিপরীতে, যা ননচ্যাক্টর কীগুলির জন্য উত্থাপিত হয়) জন্য উত্থাপিত হয় Press
মার্টা

7

এর জন্য ফাংশন তৈরি করা সবচেয়ে ভাল উপায়

ফাংশন:

$.fn.escape = function (callback) {
    return this.each(function () {
        $(document).on("keydown", this, function (e) {
            var keycode = ((typeof e.keyCode !='undefined' && e.keyCode) ? e.keyCode : e.which);
            if (keycode === 27) {
                callback.call(this, e);
            };
        });
    });
};

উদাহরণ:

$("#my-div").escape(function () {
    alert('Escape!');
})

4
প্রকৃতপক্ষে, মনে হচ্ছে keypressএটি পালানোর কীটিতে আগুন জ্বলে না। কমপক্ষে, কোনও ম্যাকের ক্রোমে নেই।
স্যামসন

1
এই মতামতের জন্য ধন্যবাদ, আমি একটি আপডেট এবং নিয়ম পরিবর্তন করেছি। keydownসমস্যা চিহ্নিত করো.
আইভিজান স্টিফান স্টিপিয়ে

একটি 'শুধুমাত্র একবার'-ব্যবহার সমর্থন করতে সক্ষম হতে আমি আপনার সমাধানটি আপডেট করেছি। এখানে একটি উদাহরণ: jsfiddle.net/oxok5x2p
ডি এইচ

6

নীচে কোডটি রয়েছে যা কেবলমাত্র ইসি কীটি অক্ষম করে না তবে এটি যেখানে চাপানো হয়েছে এবং পরিস্থিতিটির উপর নির্ভর করে শর্তটি পরীক্ষা করে এটি ক্রিয়াটি করবে কি না।

এই উদাহরণে,

e.preventDefault();

ESC কী-প্রেস ক্রিয়াটি অক্ষম করবে।

আপনি এটির সাহায্যে একটি ডিভ লুকানোর মতো কিছু করতে পারেন:

document.getElementById('myDivId').style.display = 'none';

যেখানে চাপানো ESC কীটিও বিবেচনায় নেওয়া হয়:

(e.target.nodeName=='BODY')

আপনি যদি সবার কাছে এটি প্রয়োগ করতে চান তবে শর্তের অংশটি থাকলে আপনি এটিকে সরাতে পারেন। অথবা কার্সার ইনপুট বাক্সে থাকা অবস্থায় আপনি কেবলমাত্র এই ক্রিয়াটি প্রয়োগ করতে এখানে INPUT টার্গেট করতে পারেন।

window.addEventListener('keydown', function(e){
    if((e.key=='Escape'||e.key=='Esc'||e.keyCode==27) && (e.target.nodeName=='BODY')){
        e.preventDefault();
        return false;
    }
}, true);

0

আমি মনে করি সবচেয়ে সহজ উপায় ভ্যানিলা জাভাস্ক্রিপ্ট:

document.onkeyup = function(event) {
   if (event.key === 27){
     //do something here
   }
}

6
আমার ক্রোমে (সংস্করণ 55.0.2883.95 (64-বিট)) 27 Escapeহিসাবে event.keyনয় এবং
পেয়েছি

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