JQuery Mobile禁用/启用控件

JQuery Mobile Disable/Enable Controls

本文关键字:启用 控件 禁用 Mobile JQuery      更新时间:2023-09-26

我注意到在jQuery Mobile中禁用和启用比jQuery更复杂。我注意到我们需要调用控件类型,并禁用它:

$('[type="submit"]').button('enable');

问题是这对我不起作用。我有许多不同类型的多个控件,并不是所有控件都支持jQuery Mobile方法(例如,select-one似乎没有任何方法)。

我正在尝试做以下事情:

function DisableControlMobile(control, disabled) {
    if(control){
        var type = control.type;
        //Ugly, but we need to get the id string so we can build the jQuery call, as the methods used will throw errors if we do not do this
        var id = control.id;
        console.log(type + " " + id + " " + disabled);
        if (disabled) {
            $('#' + id).attr('disabled', 'disabled');
            $('#' + id).addClass('ui-disabled'); 
            $('#' + id).addClass('ui-state-disabled');
        } else {
            $('#' + id).removeClass('ui-disabled');
            $('#' + id).removeClass('ui-state-disabled');
            $('#' + id).removeAttr('disabled');
        }
}

我所有的项目都是asp项目。例子:

<asp:TextBox ID="ArrivalTimeTextBox" runat="server" CssClass="time_textbox" data-clear-btn="true"></asp:TextBox>

似乎添加和删除类调用不做任何事情,因为有大量的div被用作包装器,它们也都包含禁用的类。

我无法找到一个完美的解决方案,但如果代码不知道它将启用/禁用哪种类型的控件,这似乎是最好的解决方案(至少我能想出)。

    if (disabled) {
        $('#' + id).parent().addClass('ui-disabled');
        $('#' + id).parent().addClass('ui-state-disabled');
        $('#' + id).attr('disabled', 'disabled');
        $('#' + id).addClass('ui-disabled'); 
        $('#' + id).addClass('ui-state-disabled');
    } else {
        $('#' + id).parent().removeClass('ui-disabled');
        $('#' + id).parent().removeClass('ui-state-disabled');
        $('#' + id).removeClass('ui-disabled');
        $('#' + id).removeClass('ui-state-disabled');
        $('#' + id).attr('disabled', "");
    }