2008-10-09 5 views
3

Я хочу написать что-то, что действует как подтверждение() в javascript, но я хочу написать его сам, чтобы я мог скрыть диалоговое окно. У меня возникли проблемы с пониманием того, как я в основном заставляю поток javascript ждать, пока пользователь не ответит, а затем вернет true или false.Как написать собственный диалог подтверждения в javascript?

ответ

5

Если бы я был вами, я бы посмотрел на одну из популярных библиотек 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... 
} 
+0

Так вот, здесь я не могу писать код типа «if (confirm (« text »)) {// handleYes} else {// обрабатывать No} // после этого что-то другое? способна использовать его так же, как вы используете подтверждение. – Bialecki 2008-10-09 20:03:52

3

Вы действительно хотите использовать рамки для этого, из-за количества странные проблемы с кросс-браузером, с которыми вы столкнетесь, пытаясь создать его самостоятельно.

У меня были хорошие результаты, используя jqModal, плагин для рамки jQuery, который позволяет определять модальные диалоги, но это ни в коем случае не единственный вариант; попробуйте Googling jquery modal или yui modal для некоторых альтернатив.

0

Вы можете использовать окно. showModalDialog (mozilla), но это нестандартная функция, введенная Internet Explorer. Теперь он также поддерживается в Firefox 3 и Safari (я не уверен, какая версия, но не менее 3,1 и более высокая, но не iPhone).