2011-03-21 14 views
6

Estoy buscando una alternativa de aspecto jquery/agradable al cuadro de diálogo estándar. La interfaz de usuario de Quantum tiene una buena, pero no detiene la ejecución del script para esperar la respuesta como lo hace confirm(). Se supone que la demostración siguiente muestra dos divs que muestran la opción del cuadro de confirmación anterior, pero el cuadro de diálogo de jquery no hace que el script espere.jQuery Confirme el cuadro que detiene la ejecución del script

http://jsfiddle.net/EvilAmarant7x/r7Ur5/

necesito específicamente algo que hace que la secuencia de comandos para hacer una pausa.

Gracias

Respuesta

8

Su usando el diálogo de la manera incorrecta

que debe hacerlo de esta manera

$("#dialog-confirm").dialog({ 
resizable: false, 
height: 140, 
modal: true, 
buttons: { 
    Proceed: function() { 
      call_true_function(); 
     $(this).dialog("close"); 
    }, 
    Cancel: function() { 
     call_false_function() 
     $(this).dialog("close"); 
    } 
} 
}); 

o algo similar

** ** EDITAR

algo así?

count = 0; 
$("#dialog-confirm").dialog({ 
resizable: false, 
height: 140, 
modal: true, 
buttons: { 
    Proceed: function() { 
      proceed(); 
     $(this).dialog("close"); 
    }, 
    Cancel: function() { 
     $(this).dialog("close"); 
    } 
} 
}); 

function proceed(){ 
    if (count != 10){ 
     $("#dialog-confirm").dialog('open');  
    }else{ 
     $('body').append("<div>Yes was selected " + count + " times!</div>"); 
    } 
} 
+0

^así por ejemplo – Paul

+0

@ Pablo gracias! – mcgrailm

+0

@mcgrailm Aunque me doy cuenta de que esta es la manera en que se supone que se usará el diálogo, esa implementación no se presta muy bien para dar al usuario una serie de preguntas y luego realizar alguna acción basada en la respuesta agregada. O tal vez solo me estoy perdiendo. No puedo pensar en una forma, al menos no sin hacer algo como tener las funciones de devolución de llamada en Call_Question_N + 1(), que crea el siguiente en la serie de diálogos. Lo que parece una solución obtusa para algo normalmente implementado como [this] (http://jsfiddle.net/EvilAmarant7x/r7Ur5/4/) – EvilAmarant7x

9

Lamentablemente, esto no es posible si utiliza una ventana personalizada de confirmación/modal. Tendrá que usar devoluciones de llamada u optar por usar el nuevo objeto deferred introducido con 1.5.

Uso diferido sería algo como esto:

var dfd = new $.Deferred(); 
$("#dialog-confirm").dialog({ 
    resizable: false, 
    height: 140, 
    modal: true, 
    buttons: { 
    Proceed: function() { 
     dfd.resolve('Success!'); 
     $(this).dialog("close"); 
    }, 
    Cancel: function() { 
     dfd.reject('Uh-oh!'); 
     $(this).dialog("close"); 
    } 
    } 
}); 

dfd.then(function() { 
    // perform next action when user clicks proceed 
}); 

dfd.fail(function() { 
    // perform some action when the user clicks cancel 
}); 
Cuestiones relacionadas