Hộp xác nhận Có hoặc Không sử dụng jQuery


121

Tôi muốn có / Không cảnh báo bằng jQuery, thay vì nút ok / Cancel:

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

Bất kỳ lựa chọn thay thế nào khác?



Hãy xem giao diện người dùng jQuery : jqueryui.com/demos/dialog/#modal-confirmation
jAndy


3
$ .alerts.okButton = 'Có'; $ .alerts.cancelButton = 'Không'; jConfirm ('Bạn có chắc không ??', '', function (r) {if (r == true) {// Đã nhấn nút Ok ...}}
Sushanth CS

2
Một giải pháp JQuery Dialog giống như một chức năng xác nhận () mà lợi nhuận: stackoverflow.com/a/18474005/1876355 Hope this helps
Pierre

Câu trả lời:


129

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();
      }
    });
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>


2
đây là jquery-ui hay jquery cũ đơn giản? Tôi không thấy .dialog () ở đâu trên documentaiton của jQuery.
chovy

11
bạn cần bao gồm jquery và jquery ui script trong trang của bạn.
Thulasiram

@Thulasiram làm cách nào để thêm plugin vào yii2khung?
Faisal

113

Phương thức cảnh báo chặn thực thi cho đến khi người dùng đóng nó:

sử dụng chức năng xác nhận:

if (confirm('Some message')) {
    alert('Thanks for confirming');
} else {
    alert('Why did you press cancel? You should have confirmed');
}

3
confirmlà "OK HỦY" chứ không phải "CÓ KHÔNG".
KlaymenDK

57

Tôi đã sử dụng các mã này:

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>

Những mã này phù hợp với tôi, nhưng tôi không thực sự chắc chắn liệu điều này có phù hợp hay không. Bạn nghĩ sao?


3
Này làm việc cho tôiif(confirm("Are you sure you want to return this meter?")){ return true; } else{ return false; }
Faisal

return confirm("Are you sure you want to return this meter?")
Ngắn


12

Tất cả các ví dụ tôi đã thấy đều không thể sử dụng lại cho các câu hỏi loại "có / không" khác nhau. Tôi đang tìm kiếm thứ gì đó cho phép tôi chỉ định một cuộc gọi lại để tôi có thể gọi cho bất kỳ tình huống nào.

Những điều sau đây đang hoạt động tốt đối với tôi:

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

Sau đó tôi gọi nó như thế này:

var deleteOk = function() {
    uploadFile.del(fileid, function() {alert("Deleted")})
};

$.confirm(
    "CONFIRM", //title
    "Delete " + filename + "?", //message
    "Delete", //button text
    deleteOk //"yes" callback
);

4

Tôi đã gặp sự cố khi lấy lại câu trả lời từ hộp thoại nhưng cuối cùng đã tìm ra giải pháp bằng cách kết hợp câu trả lời từ câu hỏi khác này hiển thị-có-và-không-nút-thay-thế-của-ok-và-hủy-trong-xác nhận- hộp có một phần mã từ hộp thoại xác nhận phương thức

Đây là những gì được đề xuất cho câu hỏi khác:

Tạo hộp xác nhận của riêng bạn:

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

Tạo confirm()phương pháp của riêng bạn :

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

Gọi nó bằng mã của bạn:

doConfirm("Are you sure?", function yes()
{
    form.submit();
}, function no()
{
    // do nothing
});

NHỮNG THAY ĐỔI CỦA TÔI Tôi đã điều chỉnh ở trên để thay vì gọi confirmBox.show() tôi sử dụng confirmBox.dialog({...}) như thế này

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

Thay đổi khác mà tôi đã thực hiện là tạo div confirmBox trong hàm doConfirm, giống như ThulasiRam đã làm trong câu trả lời của mình.


0

Tôi cần áp dụng bản dịch cho các nút Ok và Cancel. Tôi đã sửa đổi mã thành ngoại trừ văn bản động (gọi hàm dịch của tôi)


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


0

Hãy thử cách này ... Nó rất đơn giản chỉ cần sử dụng hộp thoại xác nhận để cảnh báo với YES | NO.

if (xác nhận ("Bạn có muốn nâng cấp không?")) {Mã của bạn}


-3

Bạn có thể sử dụng lại xác nhận của mình:

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

2
Vui lòng sử dụng tiếng Anh chính xác và tránh viết tắt như "u". Ngoài ra, sẽ tốt hơn nếu bạn có thể giải thích một chút mã của mình để minh họa và giáo dục OP, và tại sao bạn nghĩ câu trả lời của mình tốt hơn bất kỳ câu nào đã đăng trước đó.
Davidmh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.