Perché la conferma è una funzione di blocco (nessun javascript verrà eseguito fino a quando non restituisce vero/falso), e l'alertify è non bloccante (JS continua ad essere eseguito). Alertify non restituisce immediatamente un valore vero/falso, ma, probabilmente, restituisce immediatamente un valore non definito, quindi richiama una funzione di callback in un secondo momento, dopo che l'utente fa clic su OK o Annulla. Il valore di ritorno da tale funzione di callback non ha alcun effetto nell'esempio, perché il codice onclick ha già terminato l'esecuzione (perché non è bloccante).
si Supponendo che sta utilizzando questo: https://github.com/fabien-d/alertify.js/
Ecco come effettivamente funziona con una funzione di callback, non un valore di ritorno:
alertify.confirm(message, function (e) {
if (e) {
//after clicking OK
} else {
//after clicking Cancel
}
});
Per il vostro codice di esempio, si potrebbe provare qualcosa di simile:
function performDelete (a_element) {
// perform your delete here
// a_element is the <a> tag that was clicked
}
function confirmAction (a_element, message, action) {
alertify.confirm(message, function(e) {
if (e) {
// a_element is the <a> tag that was clicked
if (action) {
action(a_element);
}
}
});
}
<a href="#" onclick="confirmAction(this, 'Are you sure you wish to remove this?', performDelete); return false;">Delete</a>
MODIFICA: aggiornato per essere una finestra di dialogo di conferma generica che richiama una funzione di richiamata se l'utente fa clic su OK.
Questo è il problema. Non voglio fare una nuova funzione per ogni volta che la chiamo. Volevo avere una funzione generale da visualizzare e restituire. Grazie. – jfreak53
Vuoi dire che vuoi che il link passi al suo href se l'utente fa clic su OK? o c'è qualche javascript che esegue l'azione se l'utente fa clic su OK? Vedi la mia risposta aggiornata. – Levi
No, ma quello che hai postato sopra posso modificare ora per fare quello che mi serviva :) grazie. – jfreak53