JQuery Mobile禁用/启用控件

时间:2014-06-17 19:45:37

标签: javascript jquery jquery-mobile

我注意到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>

似乎add和remove类调用没有做任何事情,因为有大量的div用作包装器,它们都包含禁用的类。

1 个答案:

答案 0 :(得分:0)

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

    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', "");
    }