Non so per un tag di input, ma non ha funzionato per me con l'evento click direttamente su un pulsante. Nel mio caso, il modulo è stato pubblicato subito.
Ecco una possibile soluzione per un modulo con molti pulsanti (per cui solo uno di essi deve visualizzare il messaggio di conferma)
Nella vista:
<FORM name="F_DESTINATION_DB" id="F_DESTINATION_DB" method="POST" onsubmit="return popConfirmationBox('<?php echo LanguageControler::getGeneralTranslation("DELETE_CONFIRMATION_MESSAGE", "Deleting is an irreversible action. Are you sure that you want to proceed to the deleting?");?> ','DELETE_DB_BUTTON')">
Javascript (nel file esterno per il riutilizzo del codice):
/**
* Display a confirmation message box to validate if we must post the page or not.
*
* @param message String to display
* @param tagId String id of the tag that must display the message.
*
* @return Boolean (confirmation)
*/
function popConfirmationBox(message, tagId){
var confirmation = true;
if (typeof tagId === 'string' && document.activeElement.id.toUpperCase() === tagId.toUpperCase()) {
if (typeof message === 'string' && message.length > 0) {
confirmation = window.confirm(message);
}
}
return confirmation;
}
ho avuto un periodo piuttosto difficile da raggiungere questo obiettivo (lotto necessario di ricerca e sperimentazione), ma il codice risultante è piuttosto semplice.
Per impostazione predefinita, presumo che la conferma sia sì (nel caso in cui il pulsante su cui si fa clic non è quello destinato a visualizzare il messaggio o se l'utente non fornisce una stringa di messaggio valida).
Nota aggiuntiva: Ovviamente, questo codice non risolverà il problema se il browser utente blocca il codice lato client.
Spero che aiutare qualcuno,
Jonathan Parent-Lévesque da Montreal
fonte
2015-07-22 19:59:42
È possibile utilizzare solo javascript - impostare il pulsante sottomette ad essere pulsanti regolari type = "tasto" set ciascuno onclick a un diverso funzione e se vuoi inviare il modulo usa javascript: [form_element] .submit(); – Adidi
Devo tenerli come type = "submit" a causa di altre funzionalità che sono state messe in atto. – Richard