জাভাস্ক্রিপ্টে ctrl + z কী সংমিশ্রণ ক্যাপচার করা হচ্ছে


86

আমি এই কোড সহ জাভাস্ক্রিপ্টে ctrl+ zকী সংমিশ্রণ ক্যাপচার চেষ্টা করছি :

<html>
<head>
    <title>Untitled Document</title>
</head>
<body>

    <script type='text/javascript'>
        function KeyPress(e) {
            var evtobj = window.event? event : e


            //test1 if (evtobj.ctrlKey) alert("Ctrl");
            //test2 if (evtobj.keyCode == 122) alert("z");
            //test 1 & 2
            if (evtobj.keyCode == 122 && evtobj.ctrlKey) alert("Ctrl+z");
        }

        document.onkeypress = KeyPress;
    </script>

</body>
</html>

মন্তব্য করা লাইন "টেস্ট 1" সতর্কতা উত্পন্ন করে যদি আমি ctrlকীটি ধরে রাখি এবং অন্য কোনও কী টিপব।

মন্তব্য করা লাইন "টেস্ট 2" সতর্কতা উত্পন্ন করে যদি আমি zকী টিপই press

"পরীক্ষা 1 & 2" এর পরে লাইন অনুযায়ী এগুলি একসাথে রাখুন এবং ctrlকীটি চেপে ধরে রাখলে zকী টিপলে প্রত্যাশা অনুযায়ী সতর্কতা তৈরি হয় না।

কোডটিতে কী ভুল?

উত্তর:


95
  1. ব্যবহার onkeydown(বা onkeyup), নাonkeypress
  2. keyCode90 ব্যবহার করুন , 122 নয়

অনলাইন ডেমো: http://jsfiddle.net/29sVC/

স্পষ্ট করার জন্য, কীকোডগুলি অক্ষর কোডগুলির মতো নয়।

অক্ষর কোডগুলি পাঠ্যের জন্য হয় (এগুলি এনকোডিংয়ের উপর নির্ভর করে তারা পৃথক হয় তবে অনেক ক্ষেত্রে 0-107 এএসসিআইআই কোড থাকে)। কী-বোর্ডের কীগুলিতে কী কোডগুলি মানচিত্র। উদাহরণস্বরূপ, ইউনিকোড অক্ষরে 0x22909 এর অর্থ 好 好 এর জন্য আসলে কী আছে এমন অনেকগুলি কীবোর্ড নেই (যদি থাকে)।

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


4
ধন্যবাদ, কাজ করে। কেন ওপ্রেস এবং কী কোড 122 কাজ করে না?
পল জনস্টন

কীভাবে আপনার সমাধানে সতর্কতার পরিবর্তে ডিফল্ট () প্রতিরোধ করবেন? আমি Ctrl + t এর জন্য পরীক্ষা করছি।
সুরেন্দ্র জানওয়ালি

@ এস জয়নওয়ালি: আমি নিশ্চিত নই যে এটি সম্ভবctrl+t
জারকামস

4
কী কোড 122 কাজ করে না কেন? ভাল, 122জন্য F11 কী :)
বেবী

7
@ পলজোনস্টন কারণ একটি কী কোড একটি অক্ষর কোডের মতো নয়। অক্ষর কোডগুলি পাঠ্যের জন্য (এগুলি এনকোডিংয়ের উপর নির্ভর করে পৃথক হয় তবে অনেক ক্ষেত্রে 0-107 এএসসিআইআই কোড থাকে)। কী-বোর্ডের কীগুলিতে কী কোডগুলির মানচিত্র। উদাহরণস্বরূপ, ইউনিকোড অক্ষরে 0x22909 এর অর্থ 好 好 এর জন্য আসলে কী আছে এমন অনেকগুলি কীবোর্ড নেই (যদি থাকে)। ওএস ব্যবহারকারীরা কনফিগার করা ইনপুট পদ্ধতিগুলি ব্যবহার করে কীস্ট্রোকগুলি অক্ষর কোডগুলিতে রূপান্তর করার যত্ন নেয়। ফলাফল keypressইভেন্টে প্রেরণ করা হয় । (যেখানে পাঠ্য টাইপ না করে ব্যবহারকারীদের বোতাম টিপে টিপুন keydownএবং keyupপ্রতিক্রিয়া জানান))
Aদিয়াকপি

32

ভবিষ্যতের লোকেরা যারা এই প্রশ্নে হোঁচট খায়, তাদের কাজটি সম্পন্ন করার জন্য এখানে একটি আরও ভাল পদ্ধতি:

document.addEventListener('keydown', function(event) {
  if (event.ctrlKey && event.key === 'z') {
    alert('Undo!');
  }
});

ব্যবহার event.key ব্যাপকভাবে কোড, হার্ডকোডেড ধ্রুবক সরানোর সহজসাধ্য। এটি IE 9+ এর জন্য সমর্থন করে।

অতিরিক্ত হিসাবে, ব্যবহার document.addEventListener অর্থ হল আপনি একই ইভেন্টে অন্য শ্রোতাদের আঁকড়ে ধরবেন না।

অবশেষে, ব্যবহার করার কোনও কারণ নেই window.event। এটি সক্রিয়ভাবে নিরুৎসাহিত হয়ে ভঙ্গুর কোডের ফলস্বরূপ।


তদ্ব্যতীত, আমি যোগ করব যে KeyboardEvent.keyCodeকয়েক বছর আগে থেকে এখন অবচয় হয়। সমস্ত ব্রাউজার ক্যাপচার করার সেরা উপায়টি e.keyপ্রথমে চেক করা হয় এবং তারপরে ফ্যালব্যাক হয় e.keyCode। বা আপনি এই পলিফিলটি ব্যবহার করতে পারেন
হ্যাঁ ব্যারি

9

Ctrl+ tএটিও সম্ভব ... কেবল ৮৪ টির মতো কীকোড ব্যবহার করুন

if (evtobj.ctrlKey && evtobj.keyCode == 84) 
 alert("Ctrl+t");


3

90 টি Zকী এবং এটি প্রয়োজনীয় ক্যাপচারটি করবে ...

function KeyPress(e){
     // Ensure event is not null
     e = e || window.event;

     if ((e.which == 90 || e.keyCode == 90) && e.ctrlKey) {
         // Ctrl + Z
         // Do Something
     }
}

আপনার প্রয়োজনীয়তার উপর নির্ভর করে আপনি e.preventDefault();আপনার কাস্টম কার্যকারিতাটি একচেটিয়াভাবে সম্পাদন করতে যদি আপনার বিবৃতিতে একটি যুক্ত করতে চান ।


0
document.onkeydown = function (e) {
    var special = e.ctrlKey || e.shiftKey;
    var key = e.charCode || e.keyCode;
  console.log(key.length);
  if (special && key == 38 || special && key == 40 ) { 
    // enter key do nothing
    e.preventDefault();
  }        
}

শিফট + বা সিআরটিএল + কী সংমিশ্রণগুলি দুটি কী ব্লক করার একটি উপায় এখানে।

&& সংযুক্তিগুলি ছাড়াই কী সংমিশ্রণে সহায়তা করে, এটি সমস্ত সিটিআরএল বা শিফট কীগুলি অবরুদ্ধ করে।


-3

আমার তৈরি এই প্লাগিনটি সহায়ক হতে পারে।

প্লাগ লাগানো

আপনি এই প্লাগইনটি ব্যবহার করতে পারেন আপনাকে কী কোড সরবরাহ করতে হবে এবং ফাংশনটি চালাতে হবে

simulatorControl([17,90], function(){console.log('You have pressed Ctrl+Z');});

কোডটিতে আমি Ctrl+ এর জন্য কীভাবে সম্পাদন করব তা প্রদর্শন করেছি Z। লিঙ্কটিতে আপনি বিশদ ডকুমেন্টেশন পাবেন। প্লাগিন কোডেপেনে আমার কলমের জাভাস্ক্রিপ্ট কোড বিভাগে রয়েছে।


-5

এই কোডটি CTRL+ এর জন্য ব্যবহার করুন Z। কীপ্রেসে কি-কোড Z122 এবং CTRL+ Z26 হয় your আপনার কনসোল অঞ্চলে এই কীকোডটি পরীক্ষা করুন check

 $(document).on("keypress", function(e) {
       console.log(e.keyCode);
       /*ctrl+z*/
       if(e.keyCode==26)
       {
          //your code here
       }
    });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.