मैं जावास्क्रिप्ट के साथ अक्षर 'ए' को keypress करने की कोशिश कर रहा हूं। नीचे दिए गए कोड में, एक alert('hello') बॉक्स है जो इंगित करता है कि कोड निष्पादित हो रहा है।

लेकिन यह कोड "लॉगिन-ईमेल" इनपुट (जो एक टेक्स्टबॉक्स है) में कोई मान सेट नहीं करता है।

कोड में क्या गलत हो सकता है?

          function presskey()
          { 
              var e = document.createEvent('KeyboardEvent');
              if (e.initKeyboardEvent)
              {
                  alert('hello'); e.initKeyboardEvent('keypress', true, true, document.defaultView, 'A', 0, '', false, '');
              }
              document.getElementById('login-email').dispatchEvent(e);
          }
0
Andreas 15 सितंबर 2019, 21:35

4 जवाब

सबसे बढ़िया उत्तर

सबसे पहले, मैं यह नोट करना चाहूंगा कि .initKeyboardEvent() पदावनत है। आप जो चाहते हैं वह इवेंट कंस्ट्रक्टर है (उदा। 'इनपुट' इवेंट के लिए, new InputEvent(), जैसा कि नीचे दिए गए कोड में देखा गया है)

उस ने कहा, मेरा शेष उत्तर मानता है कि प्रश्न वास्तव में होना चाहिए "मैं टेक्स्टबॉक्स पर इनपुट ईवेंट मैन्युअल रूप से कैसे ट्रिगर करूं?"। कृपया मुझे बताएं कि क्या यह वास्तव में आप नहीं चाहते हैं, लेकिन वही अवधारणाएं अन्य प्रकार की घटनाओं पर लागू होनी चाहिए।

...यदि यह आपका वास्तविक प्रश्न है, तो मैं आपको दिखा सकता हूं कि मैं इस समस्या को कैसे हल करना शुरू करूंगा:

const typeInto = (el, data) => {
  // Note the use of the InputEvent constructor
  const e = new InputEvent('input', {
    inputType: 'insertText',
    data,
  })
  
  // Manually add the text to element.value
  el.value += data
  
  // Fire the event like you were doing
  el.dispatchEvent(e)
}

// Get element
const el = document.querySelector('.js-login-email')

// Add an event listener for the 'input' event, to prove it's working
el.addEventListener('input', e => {
  console.log(`${e.inputType}: ${e.data}`)
})

// Example "typeInto" usage: call for each letter in the string below
'example@example.com'.split('').forEach(letter => {
  typeInto(el, letter)
})
<input type="email" class="js-login-email"/>
1
BCDeWitt 15 सितंबर 2019, 23:00

मैंने अब कोड को संयोजित करने का प्रयास किया है, लेकिन मुझे यकीन नहीं है कि मैं यह सही करता हूं।

कृपया ध्यान दें कि मैं "ए" अक्षर को 'लॉगिन-ईमेल' बॉक्स में प्रेसकी () फ़ंक्शन चलाकर प्रोग्रामेटिक रूप से दबाना चाहता हूं। मैंने नीचे दिए गए कोड को चलाने की कोशिश की लेकिन केवल अलर्ट बॉक्स दिखाया गया है?

              function presskey()
              { 
                  var e = document.createEvent('KeyboardEvent');
                  if (e.initKeyboardEvent)
                  {
                      alert('hello'); e.initKeyboardEvent('keypress', true, true, document.defaultView, 'A', 0, '', false, '');
                  }
                  document.getElementById('login-email').dispatchEvent(e);
              }


var elem = document.getElementById('login-email');
elem.AddEventListener("keypress", (e) => {

    var e = document.createEvent('KeyboardEvent');
    if(e.keyCode === 65) {
        //...
    }
    document.getElementById('login-email').dispatchEvent(e);
});
0
Andreas 15 सितंबर 2019, 22:13

आप इसे keydown ईवेंट बनाकर बना सकते हैं फिर आप अपना बटन कीकोड प्राप्त कर सकते हैं

इस तरह

window.addEventListener("keydown", function (event) {
  console.log(event.keyCode)
});

तो आपके कोड में यह इस तरह होगा


window.addEventListener("keydown", function (event) {

  if(event.keyCode === 65){
     console.log('hello, world');
  }
}, true);

अगर आपको नहीं पता कि आपको कौन सा कीकोड चेक करना है तो यह वेबसाइट आपको प्रत्येक कुंजी के लिए कोड देगा

या यदि आप इसे अपने मुख्य नाम से करना चाहते हैं तो आप इसे इस तरह बना सकते हैं

window.addEventListener("keydown", function (event) {

  console.log(event.key)
});

नोट: प्रत्येक बटन के लिए कुंजी कोड assci कोड से आता है अगर आपको नहीं पता कि यह क्या है तो आप इस लिंक को देख सकते हैं

0
Community 20 जून 2020, 12:12

एमबी आप addEventListener को आजमाएं?

elem.AddEventListener("keypress", (e) => {

    var e = document.createEvent('KeyboardEvent');

    if(e.keyCode === 65) {
        //...
    }

    document.getElementById('login-email').dispatchEvent(e);

});
0
mbfilipp 15 सितंबर 2019, 21:54