Dire che ho una forma che assomiglia a questo:jQuery: Come utilizzare i tasti modificatori sul modulo di invio?
[ Animal name input field ]
pulsante Aggiungi
Se digito un nome e premere Invio, un animale con il nome dato si aggiunge a una tabella. Funziona bene. Quello che vorrei ora è chiamare l'attuale modalità di lavoro "quick add" e aggiungere una nuova funzionalità chiamata "slow add", che non sono abbastanza sicuro di come fare. Fondamentalmente quello che voglio è che se per esempio il tasto Maiusc viene tenuto premuto quando si entra o si fa clic sul pulsante, voglio che il metodo di invio del modulo faccia qualcosa di leggermente diverso. Nel mio caso, voglio che apra un modulo in cui è possibile aggiungere ulteriori dettagli sull'animale prima che venga aggiunto al tavolo.
Problema è che non sono abbastanza sicuro di come farlo. Ho provato ad aggiungere un FireBug console.info(eventData)
nella mia attuale funzione di invio e ho trovato che lo eventData
contiene una proprietà altKey, shiftKey e controlKey, ma sono sempre indefiniti anche quando tengo quei tasti premuti.
Quindi, qualcuno sa come posso fare qualcosa di speciale nel mio gestore di invio quando alcuni tasti modificatori sono stati premuti quando il modulo è stato inviato?
soluzione temporanea
finito per ignorare il pulsante-shift-click-funzione di presentare-e invece solo hanno la caratteristica aggiunta veloce come shift-enter-a-input-campi. Attuato qualcosa di simile:
$('#new-task')
.submit(onNewAnimal)
.keypress(onNewAnimal);
function onNewAnimal(event)
{
if(event.type == 'keypress' && event.which != 13)
return true;
if(event.shiftKey)
{
// Quick add
}
else
{
// Open slow add dialog
}
return false;
}
Ancora curioso di sapere se c'è un modo migliore, ma fino ad allora, questo è quello che ho. Forse può aiutare qualcun altro :)
ecco un domanda simular http://stackoverflow.com/questions/2847135/check-ctrl-shift-alt-keys-on-click-event –
@ John: Questa domanda si interroga sulla differenza tra le versioni sinistra e destra dei tasti modificatori. Inoltre parla dell'evento click e non dell'evento submit. – Svish