Потому что подтверждение является блокирующей функцией (никакой javascript не будет работать, пока не вернет true/false), а alertify не блокирует (JS продолжает выполняться). Alertify не сразу возвращает значение true/false, вместо этого он, вероятно, немедленно возвращает undefined, а затем вызывает функцию обратного вызова позже, после того как пользователь нажимает OK или Cancel. Возвращаемое значение этой функции обратного вызова не имеет никакого эффекта в вашем примере, потому что код onclick уже завершил работу (поскольку он не блокирует).
Предполагая, что вы используете это: https://github.com/fabien-d/alertify.js/
Вот как это работает с функцией обратного вызова, а не с возвращаемым значением:
alertify.confirm( message, function (e) {
if (e) {
//after clicking OK
} else {
//after clicking Cancel
}
});
Для вашего примера кода вы можете попробовать что-то вроде этого:
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>
РЕДАКТИРОВАТЬ: обновлено, чтобы быть общим диалоговым окном подтверждения, которое вызывает функцию обратного вызова, если пользователь нажимает «ОК».
person
Levi
schedule
18.01.2013