2012-12-19 18 views
35

Quello che voglio è simulare la digitazione nel campo <input> utilizzando javascript.Come simulare la digitazione nel campo di input usando jQuery?

ho il seguente codice:

var press = jQuery.Event("keydown"); 
press.ctrlKey = false; 
press.which = 65; 
$("#test").trigger(press); 

Ma quando carico della pagina, il campo di inserimento #test non ha caratteri digitati, il codice chiave del '65' rappresenta 'A', ma non c'e 'A 'input.

Fondamentalmente quello che voglio è digitare automaticamente nel sito web utilizzando Greasemonkey.

Per favore mi dia qualche idea o qualche libreria con cui posso usare per fare questo.
Grazie mille!

risposta

40

È possibile inviare eventi chiave e qualsiasi cosa li ascolti li otterrà, ma non modificheranno l'input, quindi non verrà visualizzata la lettera A, ad esempio. Questa è principalmente una cosa di sicurezza; vedi "Manually firing events" per una discussione a riguardo.

Quindi, se si desidera che la lettera a comparire, è necessario modificare il valore della ingresso come si invia l'evento chiave. C'è un plugin jQuery per questo, vedi "The $.fn.sendkeys Plugin".

Si può vedere come un <input> reagisce con chiavi utente-applicata, eventi chiave, e che plug-in this jsFiddle.

Per riferimento, questo è il pezzo chiave di codice da che jsFiddle:

$("button").click (function (zEvent) { 
    if (zEvent.target.id == "simA_plain") { 
     console.log ("Send Plain key event"); 
     var keyVal = 65; 
     $("#eventTarg").trigger ({ 
      type: 'keypress', keyCode: keyVal, which: keyVal, charCode: keyVal 
     }); 
    } 
    else { 
     console.log ("Use the Plugin to simulate a keystroke"); 
     $("#eventTarg").sendkeys ("B") ; 
    } 
}); 


Questo plugin dovrebbe essere sufficiente se si sta solo cercando di "simulare la digitazione su un <input>". Tuttavia, a seconda di cosa siete realmente cercando di fare, potrebbe essere necessario effettuare una o più delle seguenti operazioni:

  1. Basta impostare il testo a quello che si vuole che sia.
  2. Invia un evento keydown, se il javascript della pagina viene disattivato.
  3. Allo stesso modo, inviare un evento change, ecc., Se il javascript della pagina viene disattivato.
  4. Basta trovare e chiamare direttamente il javascript della pagina. Utilizzare l'iniezione di script , posizione, unsafeWindow e/o @grant none per farlo.
  5. Qualcos'altro? Indica il tuo vero obiettivo e collega alla pagina di destinazione.
+1

è davvero utile :) – shuboy2014

Problemi correlati