Evet veya Hayır jQuery kullanarak onay kutusu


121

Tamam yerine jQuery kullanarak evet / Hayır uyarıları istiyorum / İptal düğmesi:

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

Başka alternatif var mı?



JQuery kullanıcı arayüzüne bir göz atın : jqueryui.com/demos/dialog/#modal-confirmation
jAndy


3
$ .alerts.okButton = 'Evet'; $ .alerts.cancelButton = 'Hayır'; jConfirm ('Emin misiniz?', '', function (r) {if (r == true) {// Tamam düğmesine basıldı ...}}
Sushanth CS

2
Başka bir JQuery Dialog çözümü, şunu döndüren bir confirm () işlevi gibi daha çok: stackoverflow.com/a/18474005/1876355 Umarım bu yardımcı olur
Pierre

Yanıtlar:


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
bu jquery-ui mi yoksa düz eski jquery mi? JQuery'nin belgelerinde hiçbir yerde .dialog () görmüyorum.
chovy

11
Sayfanıza jquery ve jquery ui komut dosyasını eklemeniz gerekir.
Thulasiram

@Thulasiram Eklentiyi çerçeveye nasıl ekleyebilirim yii2?
Faisal

113

Uyarı yöntemi, kullanıcı kapatana kadar yürütmeyi engeller:

onayla işlevini kullanın:

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

3
confirm"TAMAM İPTAL" ise "EVET HAYIR" değildir.
KlaymenDK

57

Bu kodları kullandım:

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>

Bu kodlar benim için çalışıyor, ancak bunun doğru olup olmadığından emin değilim. Ne düşünüyorsun?


3
Bu benim için çalışıyorif(confirm("Are you sure you want to return this meter?")){ return true; } else{ return false; }
Faisal

Daha kısa return confirm("Are you sure you want to return this meter?")))
Павел Зорин


12

Gördüğüm tüm örnekler farklı "evet / hayır" türü sorular için tekrar kullanılamaz. Herhangi bir durum için arayabilmem için bir geri aramayı belirlememe izin verecek bir şey arıyordum.

Aşağıdakiler benim için iyi çalışıyor:

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

Sonra ona şöyle diyorum:

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

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

4

Yanıtı iletişim kutusundan geri almakta sorun yaşadım, ancak sonunda bu diğer soru ekranından gelen yanıtı tamam ve onaylamak yerine evet ve hayır düğmelerini birleştirerek bir çözüm buldum. mod onayı iletişim kutusundaki kodun bir kısmını içeren kutu

Diğer soru için önerilen budur:

Kendi onay kutunuzu oluşturun:

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

Kendi confirm()yönteminizi oluşturun :

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

Kodunuzla arayın:

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

DEĞİŞİKLİKLERİM Yukarıdakileri değiştirdim, böylece aramak yerine böyle confirmBox.show() kullandımconfirmBox.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();
          }
        }
    });

Yaptığım diğer değişiklik, ThulasiRam'ın cevabında yaptığı gibi doConfirm işlevi içinde onay kutusu div'i oluşturmaktı.


0

Tamam ve İptal düğmelerine bir çeviri uygulamam gerekiyordu. Kodu dinamik metin dışında olacak şekilde değiştirdim (çeviri işlevimi çağırır)


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

Bunu Deneyin ... Çok basit bir şekilde YES | NO ile uyarı için onayla iletişim kutusunu kullanın.

if (onayla ("Yükseltmek istiyor musunuz?")) {Kodunuz}


-3

Onayınızı yeniden kullanabilirsiniz:

    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
Lütfen doğru İngilizce kullanın ve "u" gibi kısaltmalardan kaçının. Ayrıca, OP'yi örneklendirmek ve eğitmek için kodunuzu biraz açıklayabilirseniz ve cevabınızın neden daha önce gönderilenlerden daha iyi olduğunu düşündüğünüzde daha iyidir.
Davidmh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.