JQuery के साथ कुंजी को अनुकरण


79

JQuery का उपयोग करते हुए, लिंक को क्लिक करने पर मैं एक कुंजी को कैसे (ट्रिगर?) अनुकरण कर सकता हूं? उदाहरण के लिए, जब कोई उपयोगकर्ता निम्न लिंक पर क्लिक करता है:

<a id="clickforspace" href="#">Click Here</a>

फिर, लिंक पर क्लिक करके, यह ऐसा होगा जैसे वे अपने कीबोर्ड पर "स्पेसबार" दबाते हैं।

कुछ इस तरह, मैं मान रहा हूँ:

$("#clickforspace").click(function(e) { 
    e.preventDefault(); 
    //... Some type of code here to initiate "spacebar" //
                                      });

इसे प्राप्त करने के बारे में कोई विचार?


2
यह आपके प्रश्न का उत्तर दे सकता है।
थीम

मैं उत्सुक हूं - जब clickस्पेसबार से बदलने की कोशिश कर रहा था, तो क्या आप चाहते थे कि ब्राउज़र पेज पर नीचे स्क्रॉल करे? किसी लिंक पर स्पेसबार दबाने का आमतौर पर पेज डाउन की को दबाने के समान प्रभाव पड़ता है।
जोएल पुर

जवाबों:


15

JQuery से कीपर घटना इस तरह का काम करने के लिए है। आप एक स्ट्रिंग "कीपर" को .trigger () पास करके घटना को ट्रिगर कर सकते हैं। हालाँकि, अधिक विशिष्ट होने के लिए आप वास्तव में एक jQuery.Event ऑब्जेक्ट ("keypress" के प्रकार को निर्दिष्ट कर सकते हैं) पास कर सकते हैं और कोई भी गुण प्रदान कर सकते हैं जैसे कि कीकोड को स्पेसबार होना चाहिए।

http://docs.jquery.com/Events/trigger#eventdata

अधिक जानकारी के लिए उपरोक्त दस्तावेज पढ़ें।


54
ज़रूर, प्रलेखन पढ़ें, लेकिन पोस्टर शायद पहले से ही जानता था। JQuery ईवेंट प्रलेखन थोड़ा अपारदर्शी है। एंड्रयू Culver ने एक सीधा जवाब दिया, प्लस अधिक जानकारी के लिए एक संदर्भ।
रॉय लेबनान

142

मेरा मानना ​​है कि यह वही है जो आप ढूंढ रहे हैं:

var press = jQuery.Event("keypress");
press.ctrlKey = false;
press.which = 40;
$("whatever").trigger(press);

से यहाँ


17
उदाहरण के लिए इनपुट नियंत्रण के साथ उपयोग किए जाने पर यह किसी भी वास्तविक पाठ का उत्पादन नहीं करेगा।
एलेक्स बर्टसेव

5
@AlexBurtsev - आप सही हैं, ऐसा इसलिए है क्योंकि यह केवल ईवेंट हैंडलर को ट्रिगर करता है जैसे कि विशिष्ट कुंजी को दबाया गया था, लेकिन वास्तव में उस कुंजी को दबाया नहीं जाता है जब कीबोर्ड पर कुंजी दबाया जाता है (शायद सुरक्षा कारणों के कारण
BornToCode

6
क्या कोई कारण है कि आप '$' और 'jQuery' को जोड़ रहे हैं?
डैनी एंड्रयूज

4
आपने जो लिखा वह क्रोम पर jQuery 2.2.3 में मेरे लिए काम नहीं किया। :( लेकिन यह किया:$("whatever").trigger($.Event("keydown", {keyCode: 40}))
जोनाथन बेन

1
जोनाथन बेने की पद्धति पर निर्माण, आप एक कुंजीकोड भेजने के बजाय कुंजी भेजने के लिए उसी तकनीक का उपयोग कर सकते हैं (क्योंकि कीकोड को चिह्नित के रूप में चिह्नित किया गया है)। उदाहरण के लिए: $ ("जो भी")। ट्रिगर ($। ईवेंट ("कीअप", {कुंजी: "एंटर"})) - और वैकल्पिक रूप से, जैसा कि विभिन्न कीबोर्ड घटनाओं के साथ दिखाया गया है।
एलन एम।


12

आप इस SendKeys jQuery प्लगइन की कोशिश कर सकते हैं:

http://bililite.com/blog/2011/01/23/improved-sendkeys/

$(element).sendkeys(string)एक इनपुट, टैक्स्टारिया या अन्य तत्व में संतोषप्रद = सच के साथ सम्मिलन बिंदु पर स्ट्रिंग सम्मिलित करता है। यदि सम्मिलन बिंदु वर्तमान में तत्व में नहीं है, तो यह याद रखता है कि जहां सम्मिलन बिंदु था, जब अंतिम बार प्रेषक को बुलाया गया था (यदि सम्मिलन बिंदु तत्व में कभी नहीं था, तो यह अंत तक संलग्न है)।


इसका उपयोग करने के लिए आपको jQuery की आवश्यकता नहीं है, आप केवल bililiteRangeलाइब्रेरी प्राप्त करके उसी कार्यक्षमता का उपयोग कर सकते हैं : github.com/dwachss/bililiteRange (वास्तव में, jQuery प्लगइन इस अविश्वसनीय पुस्तकालय के चारों ओर केवल एक पतला आवरण है जो अपने आप खड़ा है ) का है।
फिएटजैफ

5

यह काम:

var event = jQuery.Event('keypress');
event.which = 13; 
event.keyCode = 13; //keycode to trigger this for simulating enter
jQuery(this).trigger(event); 

1
[var घटना = jQuery.Event ('कीपर'); event.which = 13; event.keyCode = 13; jQuery (यह) .trigger (ईवेंट);] इसे आज़माएं
अनूप PS

मैं क्लिक करने के लिए एक संवाद में दर्ज करें, तो स्निपेट के साथ यहाँ, जरूरत मैं प्रतिस्थापित इस के साथ #myEl .. धन्यवाद
जीन बो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.