是或否使用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);