599 Stimmen

Ist es möglich, Tastendruckereignisse programmatisch zu simulieren?

Ist es möglich, Tastendruckereignisse programmatisch in JavaScript zu simulieren?

1voto

Srinidhi Shankar Punkte 191

Ich weiß, dass die Frage nach einem Javascript Weg zur Simulation eines Tastendrucks fragt. Aber für diejenigen, die für eine jQuery Weg, Dinge zu tun suchen:

var e = jQuery.Event("keypress");
e.which = 13 //or e.keyCode = 13 that simulates an <ENTER>
$("#element_id").trigger(e);

1voto

Mike Sallese Punkte 721

Aufbauend auf der Antwort von @aljgom:

Das hat bei mir hervorragend funktioniert. Anstatt das Ereignis an ein Element zu senden, wie aljgom vorgeschlagen hatte, senden Sie es einfach an das Dokument.

document.dispatchEvent(new KeyboardEvent("keydown", { key: "c" }));

0voto

yan bellavance Punkte 4500

Sobald der Benutzer die betreffende Taste drückt, können Sie einen Verweis auf diese Taste speichern und sie in jedem anderen HTML-Element verwenden:

EnterKeyPressToEmulate<input class="lineEditInput" id="addr333_1" type="text" style="width:60%;right:0%;float:right" onkeydown="keyPressRecorder(event)"></input>
TypeHereToEmulateKeyPress<input class="lineEditInput" id="addr333_2" type="text" style="width:60%;right:0%;float:right" onkeydown="triggerKeyPressOnNextSiblingFromWithinKeyPress(event)">
Itappears Here Too<input class="lineEditInput" id="addr333_3" type="text" style="width:60%;right:0%;float:right;" onkeydown="keyPressHandler(event)">
<script>
var gZeroEvent;
function keyPressRecorder(e)
{
  gZeroEvent = e;
}
function triggerKeyPressOnNextSiblingFromWithinKeyPress(TTT)
{
  if(typeof(gZeroEvent) != 'undefined')  {
TTT.currentTarget.nextElementSibling.dispatchEvent(gZeroEvent);
keyPressHandler(TTT);
  }
}
function keyPressHandler(TTT)
{
  if(typeof(gZeroEvent) != 'undefined')  {
TTT.currentTarget.value+= gZeroEvent.key;
event.preventDefault();
event.stopPropagation();
  }
}
</script>

Sie können den keyCode festlegen, wenn Sie Ihr eigenes Ereignis erstellen, Sie können vorhandene Parameter von jedem echten Tastaturereignis kopieren (ohne Berücksichtigung von Zielen, da dies die Aufgabe von dispatchEvent ist) und :

ta = new KeyboardEvent('keypress',{ctrlKey:true,key:'Escape'})

0voto

Konrad Linkowski Punkte 2071

Das habe ich gefunden:

function createKeyboardEvent(name, key, altKey, ctrlKey, shiftKey, metaKey, bubbles) {
  var e = new Event(name)
  e.key = key
  e.keyCode = e.key.charCodeAt(0)
  e.which = e.keyCode
  e.altKey = altKey
  e.ctrlKey = ctrlKey
  e.shiftKey = shiftKey
  e.metaKey =  metaKey
  e.bubbles = bubbles
  return e
}

var name = 'keydown'
var key = 'a'

var event = createKeyboardEvent(name, key, false, false, false, false, true)

document.addEventListener(name, () => {})
document.dispatchEvent(event)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X