I am using JQuery UI dialog to display a confirmation dialog when a button is clicked. I want to return 'true', when OK is clicked and false otherwise.
Associating dialog open call in onClick (as given here, $dialog.dialog('open');) event does not serve the purpose. So, as a work around, I followed approach something similar to this: http://www.perfectline.co.uk/blog/unobtrusive-custom-confirmation-dialogs-with-jquery. There are two differences between this approach and mine (a) The example uses anchor tag and, (b) It does not uses JQuery UI dialog.
I have modified the code given in the example link, but it does not work. I wonder what I am doing wrong. Is there any cheaper way to do this?
Here is the code, all the css/js are referencing to JQuery CDN, so you should be able to copy the code to see the behavior.
<!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>
Clarification: Please note that it's very simple (see the solution by bryan.taylor) to do a form submission. What I want to do here is to simulate submission by button click. More like javascript's confirm("...") method.