Dimentica di generare eventi come le sequenze di tasti. Sebbene sia possibile (in vari modi non portatili) creare eventi e instradarli nel sistema di gestione degli eventi, ciò causerà solo il richiamo delle appropriate funzioni del gestore di eventi; Sarà non fare in modo che il browser esegua le azioni predefinite per un'azione generata dall'utente come un clic del tasto o del mouse.
In ogni caso, il comportamento di cui si sta parlando con il ripristino di Escape è una stranezza di IE: in nessun altro browser Escape ha alcun effetto e persino in IE non è affidabile. In particolare, in una forma normale, una stampa di fuga perde le modifiche dall'ultimo fuoco e due pressioni di fuga in una riga reimposta l'intero modulo sui valori iniziali. Tuttavia, se il modulo ha un <input type="reset">
, una sola pressione di Escape ripristina il modulo e mette a fuoco il pulsante di ripristino. Questo rende ancora più facile perdere accidentalmente tutto ciò che hai digitato ed è un altro buon motivo per non includere un pulsante di ripristino nei moduli.
Quindi, se si desidera ripristinare i valori iniziali, è possibile chiamare form.reset()
. Se si desidera ripristinare solo un campo, è possibile impostare input.value= input.defaultValue
(o input.checked= input.defaultChecked
per le caselle/radio e allo stesso modo defaultSelected
sulle opzioni).
Se, invece, si desidera che il valore che era presente al momento il campo era ultima mirato, come si comporta cioè quando non esiste un pulsante di reset, si dovrà fare un po 'variabile ricordare, ad esempio .:
var undonevalue= $('#undoable').val();
$('#undoable').focus(function() {
undonevalue= $('#undoable').val();
});
$('#undoer').click(function() {
$('#undoable').val(undonevalue);
});
Per gli spettatori futuri - c'è un default javascript proprietà denominata 'defaultValue'. Potresti usare 'input.value = input.defaultValue' su singoli elementi. Non ha senso salvare i dati in una variabile esterna quando è già lì. – Shadow