JQuery সহ ক্লিক ইভেন্টের সময় কোনও কী টিপে আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?


105

আমি jQuery এর সাথে একটি ক্লিক ইভেন্টটি ধরতে চাই এবং একই সাথে একটি কী টিপানো হয়েছে কিনা তা জানাতে চাই যাতে আমি কীপ্রেস ইভেন্টের ভিত্তিতে কলব্যাক ফাংশনটিতে কাঁটাচামচ করতে পারি।

উদাহরণ স্বরূপ:

$("button").click(function() {
    if([KEYPRESSED WHILE CLICKED]) {
        // Do something...
    } else {
        // Do something different...
    }
});

এটি কি আদৌ সম্ভব নাকি এটি সম্ভব হলে কীভাবে সম্ভব?

উত্তর:


174

আপনি ইভেন্টের বৈশিষ্ট্যগুলি থেকে শিফট, ওয়েট এবং নিয়ন্ত্রণ কীগুলি সহজেই সনাক্ত করতে পারেন;

$("button").click(function(evt) {
  if (evt.ctrlKey)
    alert('Ctrl down');
  if (evt.altKey)
    alert('Alt down');
  // ...
});

আরও বৈশিষ্ট্য জন্য quirksmode দেখুন । আপনি যদি অন্য কীগুলি সনাক্ত করতে চান তবে ক্লিটাসের উত্তর দেখুন


3
আমি jQuery ইভেন্ট অবজেক্টে এই সম্পত্তিটি দেখতে পাচ্ছি না: api.jquery.com/category/events/event-object
ক্লিটাস

1
ঠিক আছে, পৃষ্ঠাটি যেমন বলেছে, "মূল ইভেন্ট থেকে বেশিরভাগ বৈশিষ্ট্য অনুলিপি করা হয় এবং নতুন ইভেন্ট অবজেক্টে স্বাভাবিক করা হয়।" ctrlKey, altKey ইত্যাদি বাস্তু স্ক্রিপ্ট স্ট্যান্ডার্ডের অংশ (পূর্বোক্ত jquery এপিআই পৃষ্ঠার প্রথম লিঙ্কটি দেখুন), সুতরাং (কমপক্ষে শালীন ব্রাউজারগুলিতে) ইভেন্ট অবজেক্টটি সাধারণত সেই বৈশিষ্ট্যগুলি সেট করে।
Kkyy

3
Quirks মোড শুধুমাত্র বলছেন এই সংজ্ঞায়িত করা হয় মধ্যে একটি কী ঘটনা .. একটি মাউস ঘটনা সম্পর্কে কোনো উল্লেখ।

6
এমনকি আপনি ম্যাক ওএস এক্স এর কমান্ড কী ব্যবহার করে সনাক্ত করতে পারেন if (e.metaKey) alert('Command down')। এখানে জেএস unixpapa.com/js/key.html
এফ লেকসস

48

আপনাকে পৃথকভাবে কী স্ট্যাটাসটি ব্যবহার করে keydown()এবং keyup():

var ctrlPressed = false;
$(window).keydown(function(evt) {
  if (evt.which == 17) { // ctrl
    ctrlPressed = true;
  }
}).keyup(function(evt) {
  if (evt.which == 17) { // ctrl
    ctrlPressed = false;
  }
});

কী কোডগুলির তালিকা দেখুন । এখন আপনি এটি পরীক্ষা করতে পারেন:

$("button").click(function() {
  if (ctrlPressed) {
    // do something
  } else {
    // do something else
  }
});

6
এই পদ্ধতির একদিক নীচে (আমি এর চেয়ে ভাল উপায়টি জানি না) হ'ল যদি আপনি ALT কীটি এবং অন্য একটি উইন্ডোতে ব্যবহারকারী ALT-Tabs সনাক্ত করেন তবে কীপ ইভেন্টটি ব্রাউজার দ্বারা সনাক্ত করা যায়নি কারণ এটি অন্য অ্যাপ্লিকেশনে ঘটেছে it । সেই জায়গা থেকে, jquery মনে করে কীটি নীচে রয়েছে, যতক্ষণ না তারা আপনার jquery অ্যাপের মধ্যে কীপআপ করে। আমি কেবল যতটা কল্পনা করতে পারি কেবল এটিই ALT কী নিয়ে গুরুত্বপূর্ণ।
ফ্ল্যাট বিড়াল

1
ম্যাক ওএস এক্সের জন্য এটি সিএমডি-ট্যাব হবে তবে আমি মনে করি যে প্রিন্সিপাল এখনও রয়েছেন
মুর্টটাউন

1
বা ব্রাউজারের ট্যাব পরিবর্তন করার জন্য Ctrl + ট্যাব
29-


3

@ অরুণ প্রসাদের গর্জনটি চুরি না করেই , এখানে একটি খাঁটি জেএস স্নিপেট আমি ডিফল্ট ক্রিয়াকলাপ বন্ধ করতে পুনরায় রিশাড করেছি, যা অন্যথায় সিটিএল + ক্লিক চাপলে একটি নতুন উইন্ডো খুলবে।

function Show(event) 
{
  if (event.ctrlKey) 
  {
    alert('Ctrl held down which clicked');
  } 
  else 
  {
    alert('Ctrl NOT pressed');
  }
  return false
}
<p>Hold down CTL on the link to get a different message</p>

<a href="" onclick="return Show(event)">click me</a>

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