是或否使用jQuery确认框

我想是/没有警报使用jQuery,而不是/取消button:

jQuery.alerts.okButton = 'Yes'; jQuery.alerts.cancelButton = 'No'; jConfirm('Are you sure??', '', function(r) { if (r == true) { //Ok button pressed... } } 

任何其他的select?

 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(); } }); }; 

请find演示 。

警报方法阻止执行,直到用户closures它:

使用确认function:

 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.confirm 。

 <a href="home" class="confirm">Go to home</a> 

接着:

 $(".confirm").confirm(); 

这将显示一个确认popup窗口,然后再继续链接。

这里有一个演示: http : //myclabs.github.com/jquery.confirm/

我所见过的所有例子都不能用于不同的“是/否”types的问题。 我正在寻找的东西,可以让我指定一个callback,所以我可以打电话给任何情况。

以下对我很好:

 $.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 ); 

我很难从对话框中得到答案,但最终提出了一个解决scheme,通过结合来自这个其他问题显示的答案- 是和否 – button – 而不是 – 确定 – 取消 – 在确认 -使用模式确认对话框中的部分代码

这是另一个问题的build议:

创build您自己的确认框:

 <div id="confirmBox"> <div class="message"></div> <span class="yes">Yes</span> <span class="no">No</span> </div> 

创build你自己的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(); } } }); 

我做的另一个改变是在doConfirm函数内创buildconfirmBox div,就像ThulasiRam在他的回答中所做的那样。

我需要将翻译应用于“确定”和“取消”button。 我修改了代码,除了dynamic文本(调用我的翻译function)


 $.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);