2009-09-24 14 views
9

Sto codificando un portale web per un set top box con una tastiera personalizzata.Invio programmatico di chiavi al campo di inserimento?

La tastiera ha la maggior parte dei tasti di caratteri standard ma non il backspace!

Dato che ci sono altri tasti personalizzati gratuiti, vorrei mappare uno di questi a backspace quando sono in un campo di input o in un'area di testo.

La domanda è: come inviare un backspace al campo di input al livello di programmazione?

O per quello che è: come faccio a inviare un tasto qualsiasi (come un tasto freccia) al campo di input?

+0

spiacenti. STB = set top box. – KaptajnKold

risposta

2

Se si è in un browser Web, non è possibile simulare eventi di input reali come eventi di tastiera e mouse (per motivi di sicurezza).

Tuttavia, sarà possibile rilevare gli altri tasti personalizzati che vengono premuti, in modo da poter rispondere all'evento onKeyDown per il tasto che si desidera utilizzare e aggiornare semplicemente il campo di input quando si rileva che viene premuto ...

+1

Speravo che non sarebbe arrivato a quello, ma immagino che sia l'unica soluzione se quello che dici è vero. – KaptajnKold

+0

È certamente * possibile * creare e inviare eventi. – NickFitz

0

Questo non è esattamente quello che hai chiesto, ma Control-H è lo stesso di un backspace nella maggior parte dei contesti.

+0

Cosa intendi con "ma Control-H", invia CTRL + H? – erm3nda

+1

In qualsiasi browser che abbia mai usato, CTRL + H mostra la cronologia. – PrinceTyke

-2

Utilizzare onkeypress e JavaScript. Nello script è possibile controllare il carattere inserito che si associa al backspace e farlo eseguire sul testo nel campo.

5

Supponendo che il browser supporti il ​​modello di eventi W3C, è possibile creare un KeyEvent e inviarlo utilizzando il metodo dispatchEvent del campo di input. C'è un example (using MouseEvent) su mozilla.org. Ci sono anche alcuni altri collegamenti oltre where I last answered this question ;-)

UPDATE: il seguente codice è stato testato in Firefox 3.5, e backspace con successo attraverso i caratteri nel campo di testo:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 

<script type="text/javascript"> 

window.onload = function() { 
    var field = document.getElementById("foo"); 
    var button = document.getElementById("bar"); 
    button.addEventListener("click", function(event) { 
     var keyEvent = document.createEvent("KeyboardEvent"); 
     keyEvent.initKeyEvent("keypress", true, true, null, false, false, false, false, 8, 0); 
     field.dispatchEvent(keyEvent); 
    }, false); 
} 

</script> 

</head> 
<body> 
<div> 
<input type="text" id="foo" value="abcdef"> 
<button id="bar" type="button">Fire key event</button> 
</div> 
</body> 
</html> 
+0

Bello! Molte grazie. – KaptajnKold

+0

Ahimè! Questo non funziona in Opera o Webkit. – KaptajnKold

+0

Sembra che WebKit non supporti initKeyEvent: vedrò se riesco a trovare una soluzione alternativa. – NickFitz

Problemi correlati