jQuery: একটি টেক্সটবক্সের মধ্যে কীভাবে টিএবি কী টিপস ক্যাপচার করবেন


145

আমি ট্যাব কী টিপুন ক্যাপচার করতে চান, ডিফল্ট ক্রিয়া বাতিল করতে এবং আমার নিজের জাভাস্ক্রিপ্ট ফাংশনটি কল করতে চান।

উত্তর:


249

সম্পাদনা করুন: যেহেতু আপনার উপাদানটি গতিশীলভাবে inোকানো হয়েছে, আপনার উদাহরণ হিসাবে আপনাকে ডেলিগেটon() করা ব্যবহার করতে হবে, তবে আপনাকে এটিকে কীডাউন ইভেন্টের সাথে আবদ্ধ করা উচিত, কারণ @ মার্ক মন্তব্য হিসাবে, আইপিতে কী-পিস ইভেন্টটি অ-চরিত্র কীগুলি ক্যাপচার করে না:

$("#parentOfTextbox").on('keydown', '#textbox', function(e) { 
  var keyCode = e.keyCode || e.which; 

  if (keyCode == 9) { 
    e.preventDefault(); 
    // call custom function here
  } 
});

এখানে একটি উদাহরণ পরীক্ষা করুন


আমি যখন আইআই 6 তে ট্যাবটিকে ধাক্কা দিই + ইভেন্টটি আগুন নেবে না (যদিও এটি কোনও আলফানিউমেরিক কীতে আগুন জ্বলছে) ... আমাকে .live ('কীপ্রেস', এফএন) ব্যবহার করতে হবে
জন ইরিকসন

যদি কেবল লাইভের সাথে কাজ করে, সম্ভবত আপনি আপনার পাঠ্যবক্সের উপাদানটি গতিশীলভাবে সন্নিবেশ করছেন, উপাদানটি ইতিমধ্যে পৃষ্ঠায় থাকলে এটি কার্যকর হবে, এই উদাহরণটি দেখুন: jsbin.com/oguhe
সিএমএস

হ্যাঁ পাঠ্যবাক্সটি গতিশীলভাবে .োকানো হয়েছে। আইডি # টেক্সটবক্সের সাথে আমার উদাহরণটি কেবল প্রশ্নটি সহজ করার জন্য =)
জন ইরিকসন

@ জন, আপনি using (নির্বাচক)। লাইভ ("কীডাউন", এফএন) ব্যবহার না করার কারণটি কি? সিএমএস কীডাউন ব্যবহারের পরামর্শ দিচ্ছে কারণ আইই তে, কিপ্রেস ননচার্যাক্টর কীগুলির জন্য কাজ করে না (যেমন ট্যাব)
মার্চ

5
@ অ্যাপলগ্রু: এটি হ্যাঁ, তাই বলেছে, তবে এটি সত্য নয় - কমপক্ষে কীপ্রেসের জন্য। ট্যাবের জন্য e. যা 0 এবং e.keyCode 9 (এটি যেমন হওয়া উচিত)। এফএফ 3.5.16, jQuery 1.6.2 এ পরীক্ষিত।
জোহানোদো

19

JQuery 1.9 এ কাজ করার উদাহরণ:

$('body').on('keydown', '#textbox', function(e) {
    if (e.which == 9) {
        e.preventDefault();
        // do your code
    }
});

2
e.preventDefault();পাঠ্যবক্সে সাদা স্থান aceোকানো রোধ করতে দ্বিগুণ করুন।
stil

12
$('#textbox').live('keypress', function(e) {
    if (e.keyCode === 9) {
        e.preventDefault();
        // do work
    }
});

2
এছাড়াও, ডিফল্ট ক্রিয়া বাতিল করতে, e.preventDefault () ব্যবহার করুন; ফাংশন প্রথম লাইনে।
জোশ লেইজেল

@ জোন, কীপ্রেস আইই-তে ননচার্যাক্টর কীগুলি ক্যাপচার করে না
মার্ক

@ মার্ক আমি দেখতে পাচ্ছি, আমি কীভাবে আইআই এবং এফএফের সাথে সামঞ্জস্য হতে পারি?
জন এরিকসন

4
Iron বিড়ম্বনা ... jQuery ব্রোজারগুলির মধ্যে ব্যবধানটি সরিয়ে নেওয়ার কথা, যাতে আপনাকে এই জাতীয় জিনিসগুলির বিষয়ে চিন্তা করতে না হয়।
জাগড

@ জাগড, জিকুয়েরি উদ্দেশ্য আবিষ্কার করতে পারে না। কিপ্রেস এবং কীডাউন ভাল কারণে সমতুল্য নয়। এটি ঠিক তাই ঘটে, এই পরিস্থিতিতে পার্থক্যের প্রয়োজন হয় না।
মার্ক

7

উপরের দেখানো পদ্ধতিগুলি আমার পক্ষে কাজ করে না, আমি কি কিছুটা পুরানো jquery ব্যবহার করছি, শেষ পর্যন্ত নীচে দেখানো কোড স্নিপেট এর জন্য কাজ করে - আমার একই অবস্থানে থাকা কারও ক্ষেত্রে পোস্ট করা

$('#textBox').live('keydown', function(e) {
    if (e.keyCode == 9) {
        e.preventDefault();
        alert('tab');
    }
});

5

ট্যাবে কী কী ব্যবহার করার একটি গুরুত্বপূর্ণ অংশটি তা জেনে রাখা যে ট্যাব সর্বদা ইতিমধ্যে কিছু করার চেষ্টা করবে, শেষে "মিথ্যা প্রত্যাবর্তন" করতে ভুলবেন না।

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

$(this).children('input[type=text]').blur(timeEntered).keydown(function (e) {
        var code = e.keyCode || e.which;
        if (code == "9") {
            window.tabPressed = true;
            // Here is the external function you want to call, let your external
            // function handle all your custom code, then return false to
            // prevent the tab button from doing whatever it would naturally do.
            focusShift($(this));
            return false;
        } else {
            window.tabPressed = false;
        }
        // This is the code i want to execute, it might be different than yours
        function focusShift(trigger) {
            var focalPoint = false;
            if (tabPressed == true) {
                console.log($(trigger).parents("td").next("td"));
                focalPoint = $(trigger).parents("td").next("td");

            }
            if (focalPoint) {
                $(focalPoint).trigger("click");
            }
        }
    });


1

ধরুন আপনার আইডি txtName সহ টেক্সটবক্স রয়েছে

$("[id*=txtName]").on('keydown', function(e) { 
  var keyCode = e.keyCode || e.which; 
  if (keyCode == 9) {
     e.preventDefault();
     alert('Tab Pressed');
 }
}); 

1

আপনি এই JQuery এপিআই ব্যবহার করে একটি ইভেন্ট ট্যাব ক্যাপচার করতে পারেন ।

$( "#yourInputTextId" ).keydown(function(evt) {
   if(evt.key === "Tab")
      //call your function
});

এটি evt.preventDefault () যুক্ত করার পরে আমার পক্ষে কাজ করে; যদি
লোফিল্ড থিওরী

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