JQuery এর সাথে কীপ্রেস ইভেন্টগুলি ট্রিগার করার নির্দিষ্ট উপায়


260

আমি এই প্রশ্নের সমস্ত উত্তর পড়েছি এবং এর সমাধানগুলির কোনওটিই কার্যকর বলে মনে হচ্ছে না।

এছাড়াও, আমি এই ভয়েবটি পাচ্ছি যে বিশেষ অক্ষরগুলি সহ কীপ্রেস ট্রিগার করা মোটেই কার্যকর হয় না। কে এই কাজটি করেছে তা যাচাই করতে পারবেন?


14
না আপনি ধারণাটি বুঝতে মিস করেছেন। এটি কাজ করার কথা নয়। ট্রিগার কেবল ইভেন্ট হ্যান্ডলারকে কল করবে। এটি আসলে কীটি প্রিন্ট করবে না। আপনি যদি কীটি মুদ্রণের প্রভাবটি অনুকরণ করতে চান তবে কেবল কীটি ইনপুট মানটিতে যুক্ত করুন এবং একই সাথে ইভেন্টটি ট্রিগার করুন।
নাদিয়া আলরামলি

আকর্ষণীয়, আমি এটি জানতাম না। সেক্ষেত্রে, আপনি কি আমাকে বলতে পারবেন যে ইভেন্টটি ট্রিগার করা যদি এটি অ-জ্যাকুরি ল্যাবগুলির জন্যও ট্রিগার করে। উদাহরণস্বরূপ যদি আমি সরল জেএসে একটি অনকিডাউন সেট আপ করি তবে এটি কি আমার "জাল" ইভেন্টটি ক্যাপচার করবে?
mkoryak

2
হ্যাঁ, যদি প্লেন জেসে একটি অনকিডাউন = '...' সেট আপ হয়। এটি জাল ইভেন্ট দ্বারা ট্রিগার করা হবে। আমি এটি সম্পর্কে নিশ্চিত ছিল না। তবে আমি একটি দ্রুত পরীক্ষা করেছি এবং এটি কার্যকর হয়েছে।
নাদিয়া আলরামলি

2
@ নাদিয়ার জন্য ধন্যবাদ! আমার প্রত্যাশাগুলি সঠিক না হওয়ার আগে জিনিস কেন কাজ করছে না তা ভেবে আমি সমস্ত উত্তরগুলি পড়েছি read আমি সন্দেহ করি অন্য অনেকেরও একই ভুল ধারণা থাকবে।
মাইকম্যাকানা

3
দু'বছর পরে ... পৃষ্ঠাটি পড়ে মনে হচ্ছে এটির চূড়ান্ত উপায় হ'ল: $ ('ইনপুট # অনুসন্ধান')। ট্রিগার ($। ইভেন্ট ('কীডাউন', {যা: u। .ui.keyCode.ENTER}));
মোলোকোকোকো

উত্তর:


365

আপনি যদি কী কী চাপ বা কীডাউন ইভেন্টটি ট্রিগার করতে চান তবে আপনাকে যা করতে হবে তা হ'ল:

var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
$("input").trigger(e);

42
প্রশ্নটি কীভাবে ট্রিগার করা যায়, কীভাবে ক্যাপচার করবেন না
চাদ গ্রান্ট

2
আমি ইভেন্টটি ট্রিগার করার জন্য একটি উদাহরণ যুক্ত করেছি
নাদিয়া আলরামলি

4
খুব সুন্দর উত্তর। JQuery.Event এ jQuery 1.3 বা ততোধিকের জন্য উপলব্ধ Wor : এটা এই প্রশ্নের প্রাসঙ্গিক হয়ে ওঠে stackoverflow.com/questions/1823617/...
artlung

8
এটি আমার জন্য jQuery UI স্লাইডার ব্যবহার করে না। নীচে ওরিআইএর উত্তরের মতো আমাকে e.keyCode সেট করতে হয়েছিল।
ক্রিজক্রাইগ

2
তবে, আমার আবেদনের জন্য 'কীপ' দিয়ে আমি আরও সাফল্য পেয়েছি
চিহ্নিত করুন

81

JQuery 1.6+ এর সাথে সামান্য আরও সংক্ষিপ্ত :

var e = jQuery.Event( 'keydown', { which: $.ui.keyCode.ENTER } );

$('input').trigger(e);

(যদি আপনি jQuery UI ব্যবহার না করেন তবে পরিবর্তে উপযুক্ত কীকোডে সাব ব্যবহার করুন))


4
কেবল 'কী' কোডের জন্য 'কী' কোডটি বিকল্প হিসাবে মনে রাখবেন।
রিচার্ড নীনাবার

হ্যাঁ আপনাকে কোন এবং কী কোডটি নিরাপদ থাকতে হবে তা নির্ধারণ করতে হবে (যদি ইভেন্ট শ্রোতা e.key কোডের জন্য পরীক্ষা করে থাকেন তবে আপনি কেবল jQuery.Event অবজেক্ট তৈরি করার সময় কী কোডের সংজ্ঞা দিলেই কাজ করবে)
জ্যাকোকনর

1
jQuery কোনটি / কীকোড তাই উভয়ই করা উচিত যা স্বাভাবিক করে তোলে।
নাইজেল এঞ্জেল

Api.jquery.com লিঙ্কের জন্য +1; এবং বর্তমান jQuery সংস্করণগুলি কোনটি / কী কোডের স্বাভাবিকতা দেয় না তাই আপনার উভয়েরই সুরক্ষার জন্য সরবরাহ করা উচিত
ভিক্টর

2
@ সামুয়েল লিন্ডব্লোম আমার এটি আরও স্পষ্ট করে লেখা উচিত ছিল: jQuery ইভেন্টের বৈশিষ্ট্যগুলিকে দিয়ে স্বাভাবিক করে না .trigger(jQuery.Event('name', props))। উদাহরণ দেখুন jsfiddle.net/9ggmrbpd/1 - ট্রিগারযুক্ত ইভেন্টের বৈশিষ্ট্যগুলি যেমন পাস করা হয়েছে। উত্স কোড: github.com/jquery/jquery/blob/master/src/event.js#L739
ভিক্টর

68

আসল উত্তরে কী কোডটি অন্তর্ভুক্ত করতে হবে:

var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
e.keyCode = 50
$("input").trigger(e);

যদিও jQuery এর ওয়েবসাইটটি বলে যে কোনটি এবং কীকোডকে স্বাভাবিক করা হয়েছে তারা খুব খারাপভাবে ভুল হয়েছে। E.Wich এবং e.keyCode এর জন্য স্ট্যান্ডার্ড ক্রস ব্রাউজার চেক করা সর্বদা নিরাপদ এবং এই ক্ষেত্রে কেবল উভয়কেই সংজ্ঞায়িত করুন।


34
+1 টি। যাইহোক, e.keyCode = e.which = 50;একটি এক লাইনে ভাল হবে। :)
Sk8erPeter

আমি সবেমাত্র জানতে পেরেছি যে কেবল ব্যবহার করেই keyCodeকাজ হয় না। এটিকে কাজ করতে উভয়কেই সেট করতে হয়েছিল
তাসোস কে।

@ Sk8erPeter এটি গল্ফ কোডিং প্রতিযোগিতা না করলেই তা করবে না
shabunc

18

আপনি যদি jQuery ইউআইও ব্যবহার করেন তবে আপনি এটি করতে পারেন:

var e = jQuery.Event("keypress");
e.keyCode = $.ui.keyCode.ENTER;
$("input").trigger(e);

1
e। যা আমার jQuery UI স্লাইডারের সাথে কাজ করে বলে মনে হচ্ছে না। এই উত্তরের জন্য ধন্যবাদ। এটা কাজ করে।
ক্রিজক্রাইগ

5

আমি কি-আপ দিয়ে এটি কাজ করেছিলাম।

$("#id input").trigger('keyup');

3
আমার প্রশ্নে 6 বছর আগে, আমি কীকোডটি সেট করতে চেয়েছিলাম, তবে কীভাবে তা জানতাম না।
mkoryak

4

ঠিক আছে, আমার সাথে এটি কাজ করে ...

var e2key = function(e) {
    if (!e) return '';
    var event2key = {
        '96':'0', '97':'1', '98':'2', '99':'3', '100':'4', '101':'5', '102':'6', '103':'7', '104':'8', '105':'9', // Chiffres clavier num
        '48':'m0', '49':'m1', '50':'m2', '51':'m3', '52':'m4', '53':'m5', '54':'m6', '55':'m7', '56':'m8', '57':'m9', // Chiffres caracteres speciaux
        '65':'a', '66':'b', '67':'c', '68':'d', '69':'e', '70':'f', '71':'g', '72':'h', '73':'i', '74':'j', '75':'k', '76':'l', '77':'m', '78':'n', '79':'o', '80':'p', '81':'q', '82':'r', '83':'s', '84':'t', '85':'u', '86':'v', '87':'w', '88':'x', '89':'y', '90':'z', // Alphabet
        '37':'left', '39':'right', '38':'up', '40':'down', '13':'enter', '27':'esc', '32':'space', '107':'+', '109':'-', '33':'pageUp', '34':'pageDown' // KEYCODES
    };
    return event2key[(e.which || e.keyCode)];
};

var page5Key = function(e, customKey) {
    if (e) e.preventDefault();
    switch(e2key(customKey || e)) {
        case 'left': /*...*/ break;
        case 'right': /*...*/ break;
    }
};

$(document).bind('keyup', page5Key);

$(document).trigger('keyup', [{preventDefault:function(){},keyCode:37}]); 

2

আপনি যদি বর্তমান কার্সার এবং পাঠ্য নির্বাচন বিবেচনায় নিতে চান ...

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

আমার কাছে একটি কাস্টম অন স্ক্রিনের সংখ্যাযুক্ত কীপ্যাড রয়েছে যা একাধিক ইনপুট ক্ষেত্রে পূরণ করে f আমি বাধ্য ছিলাম...

  1. ফোকাসে, সর্বশেষ ফোকাস.এলিমেন্টটি সংরক্ষণ করুন
  2. অস্পষ্টতার সাথে, বর্তমান পাঠ্য নির্বাচনটি সংরক্ষণ করুন (শুরু করুন এবং থামান)

    var pos = element.selection('getPos')
    lastFocus.pos = { start: pos.start, end: pos.end}
  3. যখন আমার কীপ্যাডের একটি বোতাম টিপবে:

    lastFocus.element.selection( 'setPos', lastFocus.pos)
    lastFocus.element.selection( 'replace', {text: myKeyPadChar, caret: 'end'})



1

এটি এই দস্তাবেজের মতো সম্পাদন করা যেতে পারে

$('input').trigger("keydown", {which: 50});

1
এটি কাজ করে বলে মনে হচ্ছে না কারণ এটি অতিরিক্ত প্যারামিটার যুক্তি ব্যবহার করে যা ইভেন্ট আর্গুমেন্টের ভিতরে কিছু সেট করে না তবে ইভেন্ট হ্যান্ডলার কলব্যাকে অতিরিক্ত যুক্তি যুক্ত করে।
টাইমওয়াস্টার

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