I have form that loads in modal using autodialog module and I have two buttons inside the form the close
and save
button. What I am trying to achieve is to just close the modal when the close button is clicked. I can do this using jQuery but what I wanted to do is use ajax_command_invoke
to invoke autodialog close to close the modal. so far this what I have done, but I can't make it work maybe I am doing it wrong.
function example_autodialog_close_form_submit($form, &$form_state) { switch($form_state['clicked_button']['#value']) { case 'Closed': $commands[] = ajax_command_invoke('.autodialog-content', 'dialog', array('close')); break; case 'Save': // Insert data in database. break; } return array('#type' => 'ajax', '#commands' => $commands); }
Using jQuery, this one work but what I wanted is use ajax_command_invoke to invoke auto dialog close.
$('#autodialog-close').click(function() { $('.autodialog-content').dialog('close'); });
Some code snippet in autodialog
module autodialog.js
file.
Drupal.ajax.prototype.commands.autodialog = function (ajax, response, status) { var options = { title: response.title, width: 500, modal: true, closeText: Drupal.t('Close'), close: function () { $(this).dialog('destroy').remove(); } }; $.extend(options, response.options); // Close previous dialog if (options.closeprev) { $('.autodialog-content').dialog('close'); } // Create dialog content var $dialogContent = $('' + response.content + '').appendTo('body'); // Open dialog. Not $dialog.dialog() because it causes problems with inline scripts for jQuery 1.4. $('#' + response.dialog_id).dialog(options); // Remove focus from first tabbable element $dialogContent.closest('.ui-dialog').focus(); // Close dialog when clicked outside $('.ui-widget-overlay:last').click(function (event) { if ($(event.target).hasClass('ui-widget-overlay')) { $dialogContent.dialog('close'); } }); Drupal.attachBehaviors($dialogContent); }