2013-11-14 2 views
1

У меня есть функция под названием showModalConfirmDialog, которая создает настраиваемое диалоговое окно с двумя кнопками Yes/No и dims the background. Теперь в моих функциях я хочу вызвать эту функцию, как:Пользовательское диалоговое окно подтверждения javascript

var outcome = showModalConfirmDialog('Are you sure?'); 

, и я хочу, чтобы реагировать в зависимости от нажатой кнопки;

if(outcome == true){ 
    // do something 
} else { 
    // do something else 
} 

Кнопки возвращают true/false. код Javascript:

button1.onclick = function(evt){ 
    return true; 
}; 

button2.onclick = function(evt){ 
    return false; 
}; 

Я не знаю, что мне не хватает, любая помощь будет оценена. Спасибо

+1

В чем проблема? Разве это не показывает? – LuigiEdlCarno

+0

Он показывает, но я хочу, чтобы он реагировал так же, как функция подтверждения javascript. Я объясню детали; скажем, у меня есть функция, называемая 'save();' в этой функции я вызываю вышеуказанный код 'var result = showModalConfirmDialog ('Are you sure?');' и в зависимости от 'result' я делаю некоторые другие вещи , проблема в том, что функция сохранения не ждет ответа пользователя/клика, он не возвращается. –

+0

Я имею в виду, мне нужно что-то заблокировать, чтобы остановить выполнение других скриптов и дождаться щелчка пользователя? @LuigiEdlCarno –

ответ

5

Вы не можете воспроизвести поведение родного модального. Вместо этого вы можете использовать обратные вызовы.

Таким образом:

function showModalConfirmDialog(msg, handler) { 
    button1.onclick = function(evt){ 
     handler(true); 
    }; 
    button2.onclick = function(evt){ 
     handler(false); 
    }; 
} 
showModalConfirmDialog('Are you sure?', function (outcome) { 
    alert(outcome ? 'yes' : 'no'); 
}); 

Или так:

function showModalConfirmDialog(msg, confirmHandler, denyHandler) { 
    button1.onclick = confirmHandler; 
    button2.onclick = denyHandler; 
} 
showModalConfirmDialog(
    'Are you sure?', 
    function() { alert('yes'); }, 
    function() { alert('no'); } 
); 
+0

Спасибо @wared, что сделал задание :) –

+0

@ShaheMasoyan Рад помочь :) – leaf

Смежные вопросы