J'utilise jQuery UI dialog pour afficher une boîte de dialogue de confirmation lorsqu'un bouton est cliqué. Je veux retourner true
, quand OK est cliqué et false
sinon.Renvoi d'une valeur dans la boîte de dialogue de confirmation à l'aide de la boîte de dialogue JQuery UI
L'association de l'appel de boîte de dialogue à onClick
(tel que donné here, $dialog.dialog('open');
) ne sert pas l'objectif. Donc, comme une solution de contournement, j'ai suivi une approche, qui est similaire à ceci: http://www.perfectline.co.uk/blog/unobtrusive-custom-confirmation-dialogs-with-jquery. Il y a deux différences entre cette approche et la mienne:
- L'exemple utilise balise d'ancrage et,
- Il ne se sert pas de dialogue jQuery UI.
J'ai modifié le code donné dans le lien de l'exemple, mais cela ne fonctionne pas. Je me demande ce que je fais mal. Existe-t-il un moyen moins coûteux de le faire?
Voici le code, tous les CSS/JS font référence à jQuery CDN, donc vous devriez être capable de copier le code pour voir le comportement.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/blitzer/jquery-ui.css" rel="stylesheet" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Control Panel</title>
</head>
<body>
<form action="http://google.com">
<button class="es-button ui-state-default ui-corner-all" name="changeSem" id="id2">Start Thermonuclear War</span>
</button>
</form>
<div title="Why so serious?" id="id3" style="display:none;">
<p>You are about to start a war.
<p>Click OK to confirm. Click Cancel to cancel this action.</p>
</div>
</body>
<script type="text/javascript">
$('#id2').click(function (event) {
if ($(this).data('propagationStopped')) {
//alert('true');
$(this).data('propagationStopped', false);
return true;
} else {
event.stopImmediatePropagation();
$('#id3').dialog({
//autoOpen: false,
width: 600,
buttons: {
"Ok": function() {
$(this).dialog("close");
$('#id2').data('propagationStopped', true);
$('#id2').triggerHandler(event);
},
"Cancel": function() {
$(this).dialog("close");
return false;
}
}
});
//alert('false');
return false;
}
});
</script>
</html>
Précision: S'il vous plaît noter qu'il est très simple (voir le solution by bryan.taylor) à faire une soumission de formulaire. Ce que je veux faire ici est de simuler la soumission en cliquant sur le bouton. Plus comme la méthode confirm() de JavaScript.
Idéalement, cet exemple devrait vous prendre à Google sur OK et fermez et ne rien faire sur Annuler. J'essaierais d'éviter la solution explicite $ (formName) .submit(). – Nishant
duplication possible de boîte de dialogue [jquery ui devez retourner la valeur, lorsque l'utilisateur appuie sur le bouton, mais ne fonctionne pas] (http://stackoverflow.com/questions/6049687/jquery-ui-dialog-box-need-to-return- value-when-user-presses-button-but-not-wor) – Liam