2016-04-25 3 views
1

Ich brauche dispatch KeyPress innerhalb eines Eingabefeld auszulösen oder zu sagen, ich viel mit „initKeyboardEvent“, „initKeyEvent“, "versucht haben, createEvent ", sogar ich fand ähnliche Frage Antworten, aber nichts scheint zu funktionieren, weder in Firefox, noch in Chrom (ich denke, sie können veraltet sein), wie KeyboardEvent.initKeyEvent(), ist veraltet.Javascript dispatch Keypress, true zurück, aber Eingabefeld ist immer noch leer

wie wir

document.getElemntByID('button').click(); 

haben Ich möchte wie etwas tun:

document.getElemntById('email').keyPress(charCode('a')); 

aber leider bin ich keypress Arbeit in irgendeiner Weise zu machen nicht in der Lage.

Ich weiß, dass es in jQuery möglich ist, aber ich möchte es in reinem Javascript tun, nachdem alle jquery Javascript im Backend verwendet, so muss es einen Weg geben, wenn ich nicht falsch liege.

==== aktualisieren =========
Ich frage mich

window.addEventListener('keydown', keyDown(), true); 

function keyDown(){ 
alert('keydown'); 
} 

var fireOnThis = document.getElementById('pwph'); 
if(window.KeyEvent) { 
    var evObj = document.createEvent('KeyEvents'); 
    evObj.initKeyEvent('keydown', true, true, window, false, false, false, false, 72, 0); 
} else { 
    var evObj = document.createEvent('UIEvents'); 
    evObj.initUIEvent('keydown', true, true, window, 1); 
    evObj.keyCode = 72; 
} 
fireOnThis.dispatchEvent(evObj); 

Dieser Code gibt mir wahr, und auch die eventListner dieses Ereignis holt, dann warum bin ich nicht in der Lage um irgendeinen Text im Eingabefeld zu sehen? ==================== Update ============================
Das scheint für jeden zu funktionieren, aber warum lässt es mein Textfeld leer, selbst wenn es wahr ist?

// Create the event 
var evt = document.createEvent('KeyboardEvent'); 

// Init the options 
evt.initKeyEvent(
      "keypress",  // the kind of event 
       true,    // boolean "can it bubble?" 
       true,    // boolean "can it be cancelled?" 
       null,    // specifies the view context (usually window or null) 
       false,   // boolean "Ctrl key?" 
       false,   // boolean "Alt key?" 
       false,   // Boolean "Shift key?" 
       false,   // Boolean "Meta key?" 
       9,    // the keyCode 
       0);    // the charCode 

// Dispatch the event on the element 
el.dispatchEvent(evt); 
+0

'charCode (‚a‘)' die Funktion aufrufen ... Sie müssen Funktionsausdruck passieren ... – Rayon

+0

Wie wäre es das 'onkeydown' Ereignis in das DOM Element hinzufügen? Wie: '' – Jerry

+1

Mögliche Duplikat [KeyPress Ereignis aufrufen, ohne tatsächlich Drücken der Taste] (http://stackoverflow.com/questions/10514123/invoking-keypress-event -ohne-tatsächlich-drückende-Taste) – Boratzan

Antwort

0

Ich habe versucht, versenden Sie ein keyPress Ereignis innerhalb eines Eingabeelement hinzufügen möchten Event, aber leider hat KeyPress nicht für mich gearbeitet, stattdessen habe ich Change Event an seiner Stelle verwendet.

so habe ich dies:

element = document.getElementById('idTxtBx_SAOTCS_ProofConfirmation'); 

    element.value = '8885'; // this alone was not working as keypress. 

    var evt = document.createEvent("HTMLEvents"); 
     evt.initEvent("change", false, true); // adding this created a magic and passes it as if keypressed 
     element.dispatchEvent(evt); 

so .value und Änderung Ereignis zusammen gemacht, gefälschte oder input keypressed Veranstaltung erfolgreich.

0

ich denke, so wie Sie die Daten-bind Zustand zu übergeben (KnockOut js) Ereignis-Listener auf Eingabefeld

  var element = document.getElementById("email"); 

      document.getElementById("email").addEventListener("keypress", function() { 
       console.log("keypresh") 

      }) 
      var evt = document.createEvent("KeyboardEvent"); 
      evt.initEvent("keypress", false, true); 
      // adding this created a magic and passes it as if keypressed 
      element.dispatchEvent(evt); 
+0

addEventListner ist etwas, das hört, wenn ein Ereignis ausgelöst wird, ich möchte nicht hören, ich möchte ein Ereignis auslösen oder auslösen (Tastendruck), in einem Eingabefeld. – user5821368

+0

dieser Link http://help.dottoro.com/ljrinokx.php Hilfe ui denke so – Rajiv

+1

Ich bin durch diesen Link bereits gegangen, Mausereignisse funktioniert aber nicht Tastaturereignisse: var keyEvent = new KeyboardEvent ("keydown", {key : "a", char: "a", shiftKey: true}); document.getElementById ('E-Mail'). DispatchEvent (keyEvent); gibt True zurück, aber gibt kein Zeichen in das Eingabefeld ein, dessen ID angegeben ist. – user5821368

Verwandte Themen