My Needs: I am using a jquery modal dialog. I have some buttons on it. I want to disable one button when It dialog opens but want to enable it after some specific operation.
What i did: I can disable the button by adding this statementjQuery(".ui-dialog-buttonpane button:contains('Issue')").attr("disabled", true).addClass("ui-state-disabled");.
Problem: But now what I want is that when edit button is clicked I perform some action, after performing that action the `Issue’ button become enable.
My code is below.
jQuery(newdiv).dialog({
width:500,
height:275,
dialogClass:'alert',
modal: true,
close: function(event, ui) { jQuery(newdiv).html(''); },
buttons: {
"issue":function()
{
},
"Edit":function()
{
//here I am opening a new dialogue. When this child dialog is closed I want the `issue` button of parent dialogue to enablee.I have used this statement
jQuery(this).find(".ui-dialog-buttonset button:contains('Issue')").removeAttr("disabled").removeClass("ui-state-disabled").addClass('ui-state-default');
},
"Cancel":function(){jQuery(this).dialog('close');},
}
});
jQuery(".ui-dialog-titlebar").hide();
jQuery(".ui-widget-content").css({'background':'none','background-color':'#FFFFFF'});
jQuery(".ui-dialog-buttonpane button:contains('Issue')").attr("disabled", true).addClass("ui-state-disabled");
There’s no need to mess around with the classes on the buttons and it probably isn’t a good idea anyway. The buttons in a jQuery-UI dialog are jQuery-UI buttons and they support
disableandenablemethods in the usual jQuery-UI style:First of all, replace this:
With this:
Then, in your edit handler, do this:
To enable the button.
As far as the selectors go, the main dialog
<div>has aui-dialogclass so we start off with.ui-dialog. Then, we want the buttons inside the dialog so we’re looking for<button>elements; this gives us.ui-dialog button. The buttons in the dialog are listed from left to right in the same order as in thebuttonsoption to the dialog. There are various ways to get the first button::first-child:first:nth-childI went with
:nth-childwhich is a CSS3 selector:So
button:nth-child(1)is the first button. I figured that if you were doing things to one button, you’d probably end up doing things to other buttons so, for example, you could do.ui-dialog button:nth-child(2)to get the “Edit” button and that would line up nicely with the selector used for the “Issue” button.