ใช่หรือไม่ใช่กล่องยืนยันโดยใช้ jQuery


121

ฉันต้องการใช่ / ไม่ใช่การแจ้งเตือนโดยใช้ jQuery แทนปุ่มตกลง / ยกเลิก:

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

ทางเลือกอื่นหรือไม่?





3
$ .alerts.okButton = 'ใช่'; $ .alerts.cancelButton = 'ไม่'; jConfirm ('คุณแน่ใจหรือไม่?', '', ฟังก์ชัน (r) {if (r == true) {// ปุ่มตกลงที่กด ... }}
Sushanth CS

2
โซลูชัน JQuery Dialog อื่นเหมือนฟังก์ชันยืนยัน () ซึ่งส่งคืน: stackoverflow.com/a/18474005/1876355หวังว่านี่จะช่วยได้
Pierre

คำตอบ:


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
นี่คือ jquery-ui หรือ jquery เก่าธรรมดา? ฉันไม่เห็น. dialog () ที่ใดใน documentaiton ของ jQuery
chovy

11
คุณต้องรวม jquery และ jquery ui script ไว้ในเพจของคุณ
Thulasiram

@ Thulasiram ฉันจะเพิ่มปลั๊กอินในyii2กรอบได้อย่างไร
Faisal

113

วิธีการแจ้งเตือนจะบล็อกการดำเนินการจนกว่าผู้ใช้จะปิด:

ใช้ฟังก์ชันยืนยัน:

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

3
confirmคือ "OK CANCEL" แต่ไม่ใช่ "YES NO"
KlaymenDK

57

ฉันใช้รหัสเหล่านี้:

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>

รหัสเหล่านี้ใช้ได้กับฉัน แต่ฉันไม่แน่ใจว่ามันถูกต้องหรือไม่ คุณคิดอย่างไร?


3
สิ่งนี้ใช้ได้กับฉันif(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?")))
ПавелЗорин

28

มีลักษณะที่ปลั๊กอิน jQuery นี้: jquery.confirm

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

แล้ว:

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

นี่จะแสดงป๊อปอัปยืนยันก่อนดำเนินการตามลิงค์

มีการสาธิตที่นี่: http://myclabs.github.com/jquery.confirm/


12

ตัวอย่างทั้งหมดที่ฉันเห็นไม่สามารถใช้ซ้ำได้สำหรับคำถามประเภท "ใช่ / ไม่ใช่" ที่แตกต่างกัน ฉันกำลังมองหาบางอย่างที่จะช่วยให้ฉันสามารถระบุการโทรกลับเพื่อที่ฉันจะได้โทรกลับได้ทุกสถานการณ์

สิ่งต่อไปนี้ทำงานได้ดีสำหรับฉัน:

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

4

ฉันมีปัญหาในการรับคำตอบกลับจากกล่องโต้ตอบ แต่ในที่สุดก็หาวิธีแก้ปัญหาโดยการรวมคำตอบจากคำถามอื่นนี้แสดงใช่และไม่ใช่ปุ่มแทนการตกลงและยกเลิกในการยืนยัน - กล่องที่มีบางส่วนของรหัสจากกล่องโต้ตอบการยืนยันโมดอล

นี่คือสิ่งที่แนะนำสำหรับคำถามอื่น ๆ :

สร้างกล่องยืนยันของคุณเอง:

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

การเปลี่ยนแปลงอื่น ๆ ที่ฉันทำคือการสร้าง div confirmBox ภายในฟังก์ชัน doConfirm เหมือนที่ ThulasiRam ทำในคำตอบของเขา


0

ฉันต้องการใช้คำแปลกับปุ่มตกลงและยกเลิก ฉันแก้ไขรหัสยกเว้นข้อความแบบไดนามิก (เรียกใช้ฟังก์ชันการแปลของฉัน)


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

ลองสิ่งนี้ ... มันง่ายมากเพียงแค่ใช้กล่องโต้ตอบยืนยันเพื่อแจ้งเตือนด้วย YES | NO

if (ยืนยัน ("คุณต้องการอัปเกรดหรือไม่")) {รหัสของคุณ}


-3

คุณสามารถใช้การยืนยันซ้ำได้:

    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
กรุณาใช้ภาษาอังกฤษที่ถูกต้องและหลีกเลี่ยงตัวย่อเช่น "u" นอกจากนี้จะเป็นการดีกว่าถ้าคุณสามารถอธิบายโค้ดของคุณเล็กน้อยเพื่อเป็นตัวอย่างและให้ความรู้เกี่ยวกับ OP และทำไมคุณถึงคิดว่าคำตอบของคุณดีกว่าที่เคยโพสต์ไว้
Davidmh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.