jquery interfaz de usuario cuadro de diálogo confirmar

Estoy, tratando de reproducir el ‘confirmar’ cuadro de javascript usando jquery diálogo. Este es mi código,

function customConfirm(customMessage) {
        $("#popUp").html(customMessage);
        $("#popUp").dialog({
            resizable: false,
            height: 240,
            modal: true,
            buttons: {
                "OK": function () {
                    $(this).dialog("close");
                    alert(true);
                    return true;
                },
                Cancel: function () {
                    $(this).dialog("close");
                    alert(false);
                    return false;
                }
            }
        });
    }

Pero cuando traté de alerta de este método, se muestra “indefinido”. No es la espera de la ventana emergente para mostrar. ¿Cómo puedo hacer esta customConfirm la función de espera para la entrada de los usuarios(aceptar/cancelar)?.
Mi necesidad es que, customConfirm() método devuelve cierto o falso de acuerdo a la entrada del usuario.

OriginalEl autor Anoop Joshi | 2013-11-28

3 respuestas

  1. 7

    Lo que usted necesita hacer es usar jQuery.la promesa.

    http://api.jquery.com/deferred.promise/

    En este ejemplo, asyncEvent

    1)crea un jquery diferida del objeto

    2)tiene lógica para resolver/rechazar, aceptar/cancelar

    3)devuelve una diferidos.promesa() del objeto, el cual puede ser utilizado con un $.cuando para determinar si un diferidos objeto de que se resuelva o se rechaza (aceptar/cancelar).

    Lo que haría es

    1)crear un jquery diferida del objeto

    2)iniciar el diálogo con aceptar/cancelar la configuración de la diferidos.resolver/rechazar

    3)devolución de un pago aplazado.promesa() del objeto,

    4)Uso del aplazamiento de la promesa objeto $.cuando
    http://api.jquery.com/jQuery.when/

    function customConfirm(customMessage) {
        var dfd = new jQuery.Deferred();
        $("#popUp").html(customMessage);
        $("#popUp").dialog({
            resizable: false,
            height: 240,
            modal: true,
            buttons: {
                "OK": function () {
                    $(this).dialog("close");
                    alert(true);
                    dfd.resolve();
                },
                Cancel: function () {
                    $(this).dialog("close");
                    alert(false);
                    dfd.reject();
                }
            }
        });
       return dfd.promise();
    }
    
    $.when( customConfirm('hey') ).then(
      function() {
      alert( "things are going well" );
    },
    function( ) {
      alert( "you fail this time" );
    });

    También se puede simplemente utilizar resolver y determinar si el confirmar que era cierto o falso en el $.cuando,

    function customConfirm(customMessage) {
        var dfd = new jQuery.Deferred();
        $("#popUp").html(customMessage);
        $("#popUp").dialog({
            resizable: false,
            height: 240,
            modal: true,
            buttons: {
                "OK": function () {
                    $(this).dialog("close");
                    alert(true);
                    dfd.resolve(true);
                },
                Cancel: function () {
                    $(this).dialog("close");
                    alert(false);
                    dfd.resolve(false);
                }
            }
        });
       return dfd.promise();
    }
    
    $.when( customConfirm('hey') ).then(
      function(confirm) {
    
       if(confirm){alert( "things are going well" );}
       else{alert( "you fail this time" );}
    });

    Espero que ayude.

    Siguiendo este y otros ejemplos con jQuery 3.1.0 & jQuery UI 1.12.0 tratando de crear un diálogo de confirmación. Fue la creación de una variable predeterminada antes de ejecutar $.when(). Se encontró que la variable que pasó antes de $.when() completado. Cualquier sugerencia o consejo?
    FYI – he encontrado mi problema. Yo estaba usando la función anónima y variables en el interior se perdió tras la ejecución. Mudarse a una función que ya está definido ayudado.

    OriginalEl autor Sumit

  2. 7

    Esto es lo que tengo que hacer uso de zepto con módulos diferidos y las devoluciones de llamada, funciona como un encanto.
    Debería ser similar para jquery o usted puede importar los diferidos y devoluciones de llamada de módulos en su html

    function customConfirm(customMessage) {
      var d = new $.Deferred();
      $("#popUp").html(customMessage);
      $("#popUp").dialog({
          resizable: false,
          height: 300,
          modal: true,
          buttons: {
              "Yes": function () {
                  $(this).dialog("close");
                  d.resolve()
              },
              "No": function () {
                  $(this).dialog("close");
                  d.reject();
              }
          }
      });
     return d.promise();
    }
    
    customConfirm("Do you Want to delete the File?")
    .then(function(){
      console.log("You Clicked Yes")
    })
    .fail(function(){
      console.log("You Clicked No")
    });
    Esto funciona muy bien. Sin embargo le falta un punto y coma después de var d = new $.Deferred(). Debe ser var d = new $.Deferred();
    Gracias fija. Pero javascript no se preocupa de semi coma.
    A mí en el pasado. ¿Cómo estás? Whatsup? Invertir en bitcoin y hacerse rico y salvar el mundo.

    OriginalEl autor pyros2097

  3. 2

    Debe de diálogo cargar en el documento listo función. Llamada de diálogo abierto en customConfirm función,

      function customConfirm(customMessage) {
        $("#popUp").html(customMessage);
        $("#popUp").dialog("open");
      }
    
      $(document).ready(function (){
        $("#popUp").dialog({
            resizable: false,
            autoOpen: false,
            height: 240,
            modal: true,
            buttons: {
                "OK": function () {
                    $(this).dialog("close");
                    alert(true);
                    return true;
                },
                Cancel: function () {
                    $(this).dialog("close");
                    alert(false);
                    return false;
                }
            }
        });
    
      });
    no es de trabajo. todavía no se muestre el mensaje indefinido cuando llamo customConfirm
    Es customMessage param tiene algún valor? Trate de consol.registro de la misma.
    He intentado como este, alerta(customConfirm(“customMessage”));
    alert(customConfirm) no es válido para mostrar el cuadro de diálogo. Try ` $(“#confirmar”).botón().click(function() { $(“#elemento emergente”).html(“Hola Cómo “); $(“#elemento emergente”).diálogo(“abrir”); });`
    Es definitivamente mostrar el cuadro de diálogo emergente como es internamente llamar al diálogo.método abierto. Mi duda es que, es posible replicar la casilla confirmar en javascript.

    OriginalEl autor Masudul

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *