জেএস / জিকুয়েরিতে কোনও কীপ্রেস / কীডাউন / কীআপ ইভেন্টটি ট্রিগার করবেন?


173

জেএস এবং / অথবা জে কিউয়েরিতে কোনও পাঠ্য ইনপুট বাক্সে কোনও পাঠ্য প্রবেশকারীকে অনুকরণ করার সর্বোত্তম উপায় কী?

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

তাহলে কেউ কীভাবে এটি সম্পাদন করবে?

উত্তর:


240

আপনি সরাসরি ইভেন্টের মাধ্যমে যে কোনও ইভেন্টের ট্রিগার করতে পারেন, এটির মতো:

$(function() {
    $('item').keydown();
    $('item').keypress();
    $('item').keyup();
    $('item').blur();
});

আপনি যা করার চেষ্টা করছেন তা কি তা করে?

আপনার সম্ভবত ট্রিগার .focus()এবং সম্ভাব্য হওয়া উচিত.change()

আপনি যদি নির্দিষ্ট কীগুলির সাহায্যে কী-ইভেন্টগুলি ট্রিগার করতে চান তবে আপনি এটি এর মতো করতে পারেন:

$(function() {
    var e = $.Event('keypress');
    e.which = 65; // Character 'A'
    $('item').trigger(e);
});

এখানে কিপ্রেস ইভেন্টগুলির সম্পর্কে কিছু আকর্ষণীয় আলোচনা রয়েছে: jQuery ইভেন্ট কীপ্রেস: কোন কী টিপেছিল? বিশেষত। যে বৈশিষ্ট্যের সাথে ক্রস ব্রাউজারের সামঞ্জস্যতা সম্পর্কিত।


3
বা$('item').trigger('keypress', {which: 'A'.charCodeAt(0)});
বব স্টেইন

@ebynum আপনি জাভাস্ক্রিপ্ট দিয়ে কিছু কোড লিখতে পারেন (কোন জেকোয়ারি নেই)।
ক্রিস পি

1
: আপনি জন্য Ctrl প্রয়োজন ctrlKey: true: এছাড়াও shiftKey,altKey
Илья Зеленько

52

আপনি যেমন ইভেন্ট প্রেরণ করতে পারে

el.dispatchEvent(new Event('focus'));
el.dispatchEvent(new KeyboardEvent('keypress',{'key':'a'}));

5
বাel.dispatchEvent(new Event('keypress', {keyCode: 'a'}))
কুজক্স

1
@ কিউজক্স কীবোর্ড এভেন্ট ব্যবহার করবেন না? এটি শিফটকির মতো মানগুলি স্বয়ংক্রিয়ভাবে পূরণ করে এবং এটি সঠিক উপায়। এছাড়াও, আপনি কী কোডে একটি স্ট্রিং রেখেছিলেন, এটি ভুল।
সুপারইপি 535

7
আপনার যদি প্রয়োজন হয় Ctrl: el.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 70, ctrlKey: true }));(এটি একটি শর্টকাট তৈরি করবে Ctrl + F)
Зеленько

31

একটি কী কী টিপস ট্রিগার করতে enter, আমাকে বিশেষত কী কোডের সম্পত্তি ব্যবহার করে @ebynum প্রতিক্রিয়াটি পরিবর্তন করতে হয়েছিল।

e = $.Event('keyup');
e.keyCode= 13; // enter
$('input').trigger(e);

2
keydownইভেন্ট ধরা হচ্ছে না, বা আমি এখানে কিছু ভুল করছি? fiddle.jshell.net/Palestinian/8d8J9
ওমর

@ ক্লোক: এটি কাজ করে। এসপ নেটওয়্যার নিয়ন্ত্রণগুলি সংশোধন করতে সম্পূর্ণ নির্বাচকের জন্য আমার মন্তব্যটি এখানে পরীক্ষা করুন : কোডপ্রোজেক্ট / টিপস / ২৯৯৩৮৮/২ নিশ্চিত করুন যে আপনি অ্যাজাক্স ব্যবহার করে ডোমে কিছু সন্নিবেশ করার পরে আপনি এটিকে কল করেছেন।
ড্যান র‌্যান্ডল্ফ

23

কোনও ইভেন্ট ট্রিগার করতে এখানে একটি ভ্যানিলা জেএস উদাহরণ রয়েছে:

function triggerEvent(el, type){
if ('createEvent' in document) {
        // modern browsers, IE9+
        var e = document.createEvent('HTMLEvents');
        e.initEvent(type, false, true);
        el.dispatchEvent(e);
    } else {
        // IE 8
        var e = document.createEventObject();
        e.eventType = type;
        el.fireEvent('on'+e.eventType, e);
    }
}

7
আপনি ব্যবহারের কয়েকটি উদাহরণ উপস্থাপন করতে পারেন? কী কীড পাঠাতে আপনার ফাংশনটি ব্যবহৃত হবে?
ম্যাক

6
এই পোস্টের জন্য সোর্স কোডটি নীচের লিঙ্কে পাওয়া যাবে যার মধ্যে ডকুমেন্টেশন রয়েছে: সাদামাটি ডটকম
ডিকসন

17

আপনি এটি দিয়ে এটি অর্জন করতে পারেন: EventTarget.dispatchEvent(event)এবং ইভেন্ট হিসাবে নতুন কীবোর্ড ইভেন্টে পাস করে।

উদাহরণ স্বরূপ: element.dispatchEvent(new KeyboardEvent('keypress', {'key': 'a'}))

কাজের উদাহরণ:

// get the element in question
const input = document.getElementsByTagName("input")[0];

// focus on the input element
input.focus();

// add event listeners to the input element
input.addEventListener('keypress', (event) => {
  console.log("You have pressed key: ", event.key);
});

input.addEventListener('keydown', (event) => {
  console.log(`key: ${event.key} has been pressed down`);
});

input.addEventListener('keyup', (event) => {
  console.log(`key: ${event.key} has been released`);
});

// dispatch keyboard events
input.dispatchEvent(new KeyboardEvent('keypress',  {'key':'h'}));
input.dispatchEvent(new KeyboardEvent('keydown',  {'key':'e'}));
input.dispatchEvent(new KeyboardEvent('keyup', {'key':'y'}));
<input type="text" placeholder="foo" />

MDN প্রেরণ

MDN কীবোর্ড ইভেন্ট


12

আপনি এখন করতে সক্ষম:

var e = $.Event("keydown", {keyCode: 64});

2

সবার আগে, আমার বলা দরকার যে সায়ননাচ 3৩৩ এর নমুনা নির্দোষভাবে কাজ করেছিল worked কিছু ব্যবহারকারী প্রকৃত উদাহরণ অনুপস্থিত সম্পর্কে অভিযোগ করেন। এখানে আমার দুটি সেন্ট। এই সাইটটি ব্যবহার করার সময় আমি মাউস ক্লিক সিমুলেশনটিতে কাজ করছি: https://www.youtube.com/tv । আপনি যে কোনও ভিডিও খুলতে এবং এই কোডটি চালানোর চেষ্টা করতে পারেন। এটি পরবর্তী ভিডিওতে স্যুইচ করে।

function triggerEvent(el, type, keyCode) {
    if ('createEvent' in document) {
            // modern browsers, IE9+
            var e = document.createEvent('HTMLEvents');
            e.keyCode = keyCode;
            e.initEvent(type, false, true);
            el.dispatchEvent(e);
    } else {
        // IE 8
        var e = document.createEventObject();
        e.keyCode = keyCode;
        e.eventType = type;
        el.fireEvent('on'+e.eventType, e);
    }
}

var nextButton = document.getElementsByClassName('icon-player-next')[0];
triggerEvent(nextButton, 'keyup', 13); // simulate mouse/enter key press

1

আমি ভেবেছিলাম আমি আপনার দৃষ্টি আকর্ষণ করব যে নির্দিষ্ট প্রসঙ্গে যেখানে শ্রোতার একটি jQuery প্লাগইন মধ্যে সংজ্ঞায়িত করা হয়েছিল, তারপরে আমার জন্য কীপ্রেসের ইভেন্টটি সফলভাবে সিমুলেট করা একমাত্র জিনিস যা শেষ পর্যন্ত সেই শ্রোতার দ্বারা ধরা হয়েছিল সেটটাইমআউট () ব্যবহার করা। যেমন

setTimeout(function() { $("#txtName").keypress() } , 1000);

এর কোনও ব্যবহার উপেক্ষা করা$("#txtName").keypress() হয়েছিল , যদিও এর শেষে রাখা হয়েছিল । তবুও কোনও নির্দিষ্ট ডিওএম পরিপূরক তাত্পর্যপূর্ণভাবে তৈরি করা হচ্ছে না।.ready() function


1

কি-বোর্ডEventInit এ টাইপস্ক্রিপ্ট কাস্ট করার জন্য এবং সঠিক কী-কোড পূর্ণসংখ্যা সরবরাহ করুন

const event = new KeyboardEvent("keydown", {
          keyCode: 38,
        } as KeyboardEventInit);

1
টাইপস্ক্রিপ্টে আপনি যা যা করতে পারেন @ কেমিরোড্রিগেজ আপনি জেএসে করতে পারেন (ঠিক যেমন jQuery)। টাইপস্ক্রিপ্টটি জেএস সিনট্যাক্সগুলিকে গোলমেলে না ফেলে কেবল তাদের প্রসারিত করে। আপনি যদি কী-বোর্ডEventInit` হিসাবে সরিয়ে ফেলেন তবে এটি মূলত একটি জেএস কোড হবে। উত্তরের জন্য +1, ধন্যবাদ।
জের্গো হর্ভথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.