如何禁用jQuery UI对话框上的按钮?

leo*_*ora 142 jquery jquery-ui jquery-ui-dialog

如何禁用jQuery UI对话框上的按钮.我似乎无法在上面链接的任何文档中找到它.

我在模态确认上有2个按钮("确认"和"取消").在某些情况下,我想禁用"确认"按钮.

小智 211

看起来任何人,即使在这个相关问题中,都提出了这个解决方案,类似于Nick Craver给出的答案的第一部分:

$("#dialog").dialog({
    width: 480,
    height: "auto",
    buttons: [
        {
            id: "button-cancel",
            text: "Cancel",
            click: function() {
                $(this).dialog("close");
            }
        },
        {
            id: "button-ok",
            text: "Ok",
            click: function() {
                $(this).dialog("close");
            }
        }
    ]
});
Run Code Online (Sandbox Code Playgroud)

然后,在其他地方,您应该能够将API用于jquery UI按钮:

$("#button-ok").button("disable");
Run Code Online (Sandbox Code Playgroud)

  • 这需要在文档中...它甚至不显示您可以为按钮分配ID. (38认同)
  • +1.我不确定为什么这个答案没有得到更多的选票.这是我遇到的最干净,工作得很好. (14认同)
  • 这很棒!如果你担心id是唯一的,你也可以使用"class"而不是"id".虽然您需要输入更多内容才能搜索按钮:`$("#dialog").dialog("widget").find(".button-ok-class").button("enable" )` (10认同)
  • 同意:这是我认为UI团队应该实现的解决方案......:+)你甚至可以做得更快:`{text:"ok",禁用:true,click:function(){}}` (4认同)

Nic*_*ver 158

如果你包含jQuery UI包含的.button()插件/小部件(如果你有完整的库并且是1.8+,那么你可以使用它),你可以使用它来禁用按钮直观地更新状态,如下所示:

$(".ui-dialog-buttonpane button:contains('Confirm')").button("disable");
Run Code Online (Sandbox Code Playgroud)

你可以在这里尝试一下 ......或者如果你使用旧版本或不使用按钮小部件,你可以像这样禁用它:

$(".ui-dialog-buttonpane button:contains('Confirm')").attr("disabled", true)
                                              .addClass("ui-state-disabled");
Run Code Online (Sandbox Code Playgroud)

如果你想在特定的对话框中,比如ID,那么这样做:

$("#dialogID").next(".ui-dialog-buttonpane button:contains('Confirm')")
              .attr("disabled", true);
Run Code Online (Sandbox Code Playgroud)

在其他:contains()可能会出现误报的情况下,你可以.filter()像这样使用,但是因为你知道你的两个按钮,所以这里有点过头了. 如果在其他情况下就是这种情况,它看起来像这样:

$("#dialogID").next(".ui-dialog-buttonpane button").filter(function() {
  return $(this).text() == "Confirm";
}).attr("disabled", true);
Run Code Online (Sandbox Code Playgroud)

这将阻止:contains()匹配其他东西的子串.

  • 请注意,如果您不想通过文本查询所需按钮,也可以为按钮提供一个类; jQuery UI的对话框支持一个包含按钮选项对象的数组,每个对象包含有关按钮属性的信息. (3认同)

Jér*_*ôme 49

您还可以使用not now recorded disabled属性:

$("#element").dialog({
    buttons: [
    {
        text: "Confirm",
        disabled: true,
        id: "my-button-1"
    }, 
    {
        text: "Cancel",
        id: "my-button-2",
        click: function(){            
               $(this).dialog("close");
        }  

    }]
});
Run Code Online (Sandbox Code Playgroud)

要在对话框打开后启用,请使用:

$("#my-button-1").attr('disabled', false);
Run Code Online (Sandbox Code Playgroud)

JsFiddle:http://jsfiddle.net/xvt96e1p/4/

  • 没有文件了.这是官方的. (2认同)

Chr*_*ann 7

以下是按钮单击功能中的工作原理:

$(function() {
    $("#dialog").dialog({
        height: 'auto', width: 700, modal: true,
        buttons: {
            'Add to request list': function(evt) {

                // get DOM element for button
                var buttonDomElement = evt.target;
                // Disable the button
                $(buttonDomElement).attr('disabled', true);

                $('form').submit();
            },
            'Cancel': function() {
                $(this).dialog('close');
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)