8 ответов:
ConfirmDialog('Are you sure'); function ConfirmDialog(message) { $('<div></div>').appendTo('body') .html('<div><h6>'+message+'?</h6></div>') .dialog({ modal: true, title: 'Delete message', zIndex: 10000, autoOpen: true, width: 'auto', resizable: false, buttons: { Yes: function () { // $(obj).removeAttr('onclick'); // $(obj).parents('.Parent').remove(); $('body').append('<h1>Confirm Dialog Result: <i>Yes</i></h1>'); $(this).dialog("close"); }, No: function () { $('body').append('<h1>Confirm Dialog Result: <i>No</i></h1>'); $(this).dialog("close"); } }, close: function (event, ui) { $(this).remove(); } }); };вы можете найти демо.
метод alert блокирует выполнение до тех пор, пока пользователь не закроет его:
используйте функцию подтверждения:
if (confirm('Some message')) { alert('Thanks for confirming'); } else { alert('Why did you press cancel? You should have confirmed'); }
я использовал эти коды:
HTML:
<a id="delete-button">Delete</a>jQuery:
<script> $("#delete-button").click(function(){ if(confirm("Are you sure you want to delete this?")){ $("#delete-button").attr("href", "query.php?ACTION=delete&ID='1'"); } else{ return false; } }); </script>эти коды работают для меня, но я не совсем уверен, что это правильно. А ты как думаешь?
посмотрите на этот плагин jQuery: jquery.подтвердите.
<a href="home" class="confirm">Go to home</a>и затем:
$(".confirm").confirm();это покажет всплывающее окно подтверждения, прежде чем перейти по ссылке.
здесь есть демо:http://myclabs.github.com/jquery.confirm/
все примеры, которые я видел, не являются многоразовыми для разных вопросов типа "Да/нет". Я искал что-то, что позволило бы мне указать обратный вызов, чтобы я мог позвонить в любой ситуации.
следующее работает хорошо для меня:
$.extend({ confirm: function (title, message, yesText, yesCallback) { $("<div></div>").dialog( { buttons: [{ text: yesText, click: function() { yesCallback(); $( this ).remove(); } }, { text: "Cancel", click: function() { $( this ).remove(); } } ], close: function (event, ui) { $(this).remove(); }, resizable: false, title: title, modal: true }).text(message).parent().addClass("alert"); } });Я тогда называю это так:
var deleteOk = function() { uploadFile.del(fileid, function() {alert("Deleted")}) }; $.confirm( "CONFIRM", //title "Delete " + filename + "?", //message "Delete", //button text deleteOk //"yes" callback );
у меня были проблемы с получением ответа из диалогового окна, но в конце концов придумал решение, объединив ответ из этого другого вопроса дисплей-да-и-нет-кнопки-вместо ОК и отмена-в-подтверждать-окне С частью кода из диалогового окна модального подтверждения
это то, что было предложено на другой вопрос:
создать свой собственный окно подтверждения:
<div id="confirmBox"> <div class="message"></div> <span class="yes">Yes</span> <span class="no">No</span> </div>создать свой собственный
confirm()метод:function doConfirm(msg, yesFn, noFn) { var confirmBox = $("#confirmBox"); confirmBox.find(".message").text(msg); confirmBox.find(".yes,.no").unbind().click(function() { confirmBox.hide(); }); confirmBox.find(".yes").click(yesFn); confirmBox.find(".no").click(noFn); confirmBox.show(); }назовите его своим кодом:
doConfirm("Are you sure?", function yes() { form.submit(); }, function no() { // do nothing });МОИ ИЗМЕНЕНИЯ Я подправил выше, так что вместо вызова
confirmBox.show()ЯconfirmBox.dialog({...})такойconfirmBox.dialog ({ autoOpen: true, modal: true, buttons: { 'Yes': function () { $(this).dialog('close'); $(this).find(".yes").click(); }, 'No': function () { $(this).dialog('close'); $(this).find(".no").click(); } } });другим изменением, которое я сделал, было создание confirmBox div в функции doConfirm, как это сделал Тулазирам в своем ответе.
Мне нужно было применить перевод к кнопкам Ок и отмена. Я изменил код на исключение динамического текста (вызывает мою функцию перевода)
$.extend({ confirm: function(message, title, okAction) { $("<div></div>").dialog({ // Remove the closing 'X' from the dialog open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }, width: 500, buttons: [{ text: localizationInstance.translate("Ok"), click: function () { $(this).dialog("close"); okAction(); } }, { text: localizationInstance.translate("Cancel"), click: function() { $(this).dialog("close"); } }], close: function(event, ui) { $(this).remove(); }, resizable: false, title: title, modal: true }).text(message); } });
вы можете повторно использовать подтверждение:
function doConfirm(body, $_nombrefuncion) { var param = undefined; var $confirm = $("<div id='confirm' class='hide'></div>").dialog({ autoOpen: false, buttons: { Yes: function() { param = true; $_nombrefuncion(param); $(this).dialog('close'); }, No: function() { param = false; $_nombrefuncion(param); $(this).dialog('close'); } } }); $confirm.html("<h3>"+body+"<h3>"); $confirm.dialog('open'); }; // for this form just u must change or create a new function for to reuse the confirm function resultadoconfirmresetVTyBFD(param){ $fecha = $("#asigfecha").val(); if(param ==true){ // DO THE CONFIRM } } //Now just u must call the function doConfirm doConfirm('body message',resultadoconfirmresetVTyBFD);
Comments