2017-05-22 4 views
0

Ich habe ein Szenario, wo ich eine JS-Methode vorbereiten muss, wo die Tab-Taste ausgelöst werden soll. Wenn die Funktion ausgeführt wird, sollte die Schaltfläche "Tab" geklickt werden. vorzugsweise mit Schlüsselcode.So feuern Sie einen Tastatur-Tastendruck mit Tastencode

+0

Mögliche Duplikate von [Ein Tastaturereignis in JavaScript auslösen] (http://stackoverflow.com/questions/961532/firing-a-keyboard-event-in-javascript) – JYoThI

+0

"Tab-Taste klicken" macht keinen Sinn. Meinst du das Klicken auf einen Button sollte ein [* keyboard event *] (https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent) gesendet werden, das den gleichen * key * Wert wie der Tab-Taste? Für * key * benutzen Sie "Tab", für * das * '9'. – RobG

+0

ja genau, Funktion sollte ausführen oder versenden was auch immer Schlüsselcode geliefert –

Antwort

0

Sie können Tastaturereignisse versenden, aber die Ergebnisse sind möglicherweise nicht überwältigend.

Wie unten gezeigt, können Sie ein Ereignis mit entsprechenden Eigenschaften senden, aber in einigen Browsern sind die Werte leer und der Browser ignoriert sie virtuell. Sie können auf die Schaltfläche klicken und "Enter" drücken, um darauf zu klicken. Er löst eine Registerkarte aus, der Fokus wird jedoch nicht verschoben und das zugeordnete Ereignis meldet die im Konstruktor festgelegten Werte nicht.

Eingabe in die Eingabe zeigt die Art des Ergebnisses, das Sie erhalten sollten. Probieren Sie es in vielen Browsern aus.

function showEventProperties(evt) { 
 
    document.getElementById('details').innerHTML = ['type','key','code','keyIdentifier','charCode','which','keyCode'].map(function(key) { 
 
    return key + ': ' + evt[key]; 
 
    }).join('<br>'); 
 
} 
 

 
function sendTab(node) { 
 
    var evt = new KeyboardEvent('keypress', { 
 
    'view': window, 
 
    'bubbles': true, 
 
    'key': 'Tab', 
 
    'charCode': 9, 
 
    'keyCode': 9, 
 
    'which': 9 
 
    }); 
 
    node.dispatchEvent(evt); 
 
} 
 

 
window.onload = function() { 
 
    document.addEventListener('keypress', showEventProperties, false); 
 
}
<input onkeypress="showEventProperties(event)"> 
 
<br> 
 
<button onclick="sendTab(this)">Do tab</button><button>Next button</button> 
 
<p id="details"></p>

Sie auch die ältere initKeyEvent versuchen.

+0

Vielen Dank, aber es funktioniert nicht in IE :(. Eigentlich habe ich mit diesem Problem, weil mein wirkliches Problem anders ist. Dieses verwende ich als eine Arbeit um Bitte finden Sie den Link dafür, wenn Sie eine bessere Lösung vorschlagen können: [link] (https://stackoverflow.com/questions/44062232/how-to-validate-shifttab-button-click-in-js) –

Verwandte Themen