Я хочу написать что-то, что действует как подтверждение() в javascript, но я хочу написать его сам, чтобы я мог скрыть диалоговое окно. У меня возникли проблемы с пониманием того, как я в основном заставляю поток javascript ждать, пока пользователь не ответит, а затем вернет true или false.Как написать собственный диалог подтверждения в javascript?
ответ
Если бы я был вами, я бы посмотрел на одну из популярных библиотек javascript. Большинство из них содержат какой-то модальный диалог.
Пара, которую я нашел для JQuery, - jqModal и SimpleModal.
При создании модального диалога, вам придется связать события с кнопками, так что вы могли бы сделать что-то вроде:
function askUserYesOrNo() {
var myDialog = $('<div class="mydialog"><p>Yes or No?</p><input type="button" id="yes" value="Yes"/><input type="button" id="no" value="No"/></div>');
$("#yes").click(handleYes);
$("#no").click(handleNo);
myDialog.modal(); //This would have to be replaced by whatever syntax the modal framework uses
}
function handleYes() {
//handle yes...
}
function handleNo() {
//handle no...
}
Вы действительно хотите использовать рамки для этого, из-за количества странные проблемы с кросс-браузером, с которыми вы столкнетесь, пытаясь создать его самостоятельно.
У меня были хорошие результаты, используя jqModal, плагин для рамки jQuery, который позволяет определять модальные диалоги, но это ни в коем случае не единственный вариант; попробуйте Googling jquery modal или yui modal для некоторых альтернатив.
Вы можете использовать окно. showModalDialog (mozilla), но это нестандартная функция, введенная Internet Explorer. Теперь он также поддерживается в Firefox 3 и Safari (я не уверен, какая версия, но не менее 3,1 и более высокая, но не iPhone).
А скелетное YUI модальный лайтбокс (example):
Для Mootools, есть moo.rd's Custom.Confirm и Windoo.Confirm для справки.
Так вот, здесь я не могу писать код типа «if (confirm (« text »)) {// handleYes} else {// обрабатывать No} // после этого что-то другое? способна использовать его так же, как вы используете подтверждение. – Bialecki 2008-10-09 20:03:52