का उपयोग कर एक टैब कीप्रेस को सिमुलेट करना मैं ब्राउज़र कार्य करना चाहता हूं जैसे कि उपयोगकर्ता ने कुछ क्लिक करने पर टैब कुंजी दबाया था।जावास्क्रिप्ट
var event = document.createEvent('KeyboardEvent');
event.initKeyEvent("keypress", true, true, null, false, false, false, false, 9, 0);
this.input.focus()[0].dispatchEvent(event);
और jQuery:
this.input.focus().trigger({ type : 'keypress', which : 9 });
... जो मैं here से ले लिया क्लिक हैंडलर में मैं निम्नलिखित दृष्टिकोण की कोशिश की है।
पहला दृष्टिकोण सबसे अच्छा शर्त प्रतीत होता है, लेकिन यह काफी काम नहीं करता है। यदि मैं पिछले दो पैरामीटर को 98, 98 में बदलता हूं, तो वास्तव में, 'बी' इनपुट बॉक्स में टाइप किया जाता है। लेकिन 9, 0 और 9, 9 (पूर्व जिनमें से मैं MDC वेब साइट से सही लिया) दोनों मेरे FF3 के तहत फ़ायरबग में इन त्रुटियों को दे:
Permission denied to get property XULElement.popupOpen
[Break on this error] this.input.focus()[0].dispatchEvent(event);
Permission denied to get property XULElement.overrideValue
[Break on this error] this.input.focus()[0].dispatchEvent(event);
Permission denied to get property XULElement.selectedIndex
[Break on this error] this.input.focus()[0].dispatchEvent(event);
Permission denied to set property XULElement.selectedIndex
[Break on this error] this.input.focus()[0].dispatchEvent(event);
मैं ऐसे सुना है (का कोई स्पष्ट परिभाषा के साथ 'ऐसी') घटनाएं 'अविश्वसनीय' हैं, जो इन त्रुटियों को समझा सकती हैं।
दूसरा दृष्टिकोण घटना के रूप में जो भी मूल्य डालता है उसका कारण बनता है। जिसे घटना के रूप में पारित किया जाना है। लेकिन कोई प्रभाव नहीं है (भले ही मैं 9 के बजाय 98 का उपयोग करता हूं, बॉक्स में कोई 'बी' टाइप नहीं किया जाता है।) यदि मैं जिस ऑब्जेक्ट को पास कर रहा हूं उसमें event.data सेट करने का प्रयास करता हूं, जब ईवेंट ट्रिगर होता है तो यह अपरिभाषित होता है। मैं जिस कोड का उपयोग कर रहा हूं वह यह देखने के लिए है कि:
$('#hi').keypress(function(e) {
console.log(e);
});
कोई अन्य विचार?
क्या आप आह्वान करना चाहते हैं? क्या आप उन्हें अगले इनपुट में ले जाने की कोशिश कर रहे हैं? – hunter
हां। लेकिन अगला 'इनपुट' आवश्यक रूप से इनपुट या अन्य स्वाभाविक रूप से टैबस्टॉप तत्व नहीं है। न ही यह अनिवार्य रूप से अनैसर्गिक रूप से टैबस्टॉप किया गया है (यानी, $ ("[tabindex]"))। भौतिक रूप से दबाने वाला टैब (या शिफ़्ट + टैब) ठीक वही करता है जो मैं चाहता हूं ... – Kev
इसके लिए धन्यवाद। मुझे केवल आपके प्रश्न के पहले कोड उदाहरण में दिलचस्पी थी, जिसने वास्तव में मदद की :) –