1

I'm trying to use JQuery to enable a Telerik RadComboBox based on the selection of another Telerik RadComboBox.

Use case: User comes to page, ddlRequired is enabled, ddlListItems is disabled. If user selects "Required" then I want ddlListItems to then be enabled. Conversely, if "Optional" is selected, I want to disable ddlListItems.

                <telerik:RadComboBox ID="ddlRequired" runat="server" Width="80px" ShowDropDownOnTextboxClick="true" EnableEmbeddedSkins="false" Skin="Classic"  OnClientSelectedIndexChanged="OnSelectedIndexChanged">
                    <Items>
                        <telerik:RadComboBoxItem Text="Required" Value="1" />
                        <telerik:RadComboBoxItem Text="Optional" Value="0" />
                    </Items>
                </telerik:RadComboBox>

                <telerik:RadComboBox ID="ddlListItems" runat="server" Width="200px" ShowDropDownOnTextboxClick="true" EnableEmbeddedSkins="false" Skin="Classic" Enabled="false">
                    <ItemTemplate>
                        <asp:TextBox ID="txtBoxQ1" runat="server" Width="160"/>
                    </ItemTemplate>
                    <Items>
                        <telerik:RadComboBoxItem />
                        <telerik:RadComboBoxItem />
                    </Items>
                </telerik:RadComboBox>

Here's where I've left off after trying several approaches. I realize it's not complete.

function OnSelectedIndexChanged()
{
    var ddl = $find("<%=ddlListItemsQ1.ClientID%>");
    ddl.set_enabled(false);
}
Earl
  • 283
  • 2
  • 7
  • 14

5 Answers5

2

While this isn't really jQuery, more just plain old regular JavaScript, using the client-side API of the RadComboBox, specifically the article on the RadComboBoxItem (for the enable function) and the OnClientSelectedIndexChanged article (for details on the eventArgs) I created the following quick little snippet:

    function OnSelectedIndexChanged(sender, eventArgs) {
        var selectedItem = eventArgs.get_item();
        if (selectedItem.get_text() === "Required") {
            var ddlListItemsClient = $find('<%= ddlListItems.ClientID %>');
            ddlListItemsClient.enable();
        }
    }

I just tested it with the ASPX code you provided and it worked fine.

carlbergenhem
  • 1,989
  • 13
  • 12
0
disableChildElements( document.getElementById(<%=dropdown_Id.ClientId%>"))

function disableChildElements(objId)
{
    var theObject = document.getElementById(objId);
    var level = 0;
    TraverseDOM(theObject, level, disableElement);
}

function TraverseDOM(obj, lvl, actionFunc)
{
    for (var i = 0; i < obj.childNodes.length; i++)
    {
        var childObj = obj.childNodes[i];
        if (childObj.tagName)
        {
            actionFunc(childObj);
        }
        TraverseDOM(childObj, lvl + 1, actionFunc);
    }
}

function disableElement(obj)
{
    obj.disabled = true;
}
DanM7
  • 2,203
  • 3
  • 28
  • 46
Sumit khare
  • 179
  • 2
  • 4
0

This doesn't work!

$('#ddlListItems').attr('Enabled', 'false');

This works!

    @(Html.Kendo().DropDownListFor(m => m.RoleId)
        .Name("RoleId")

    ...

    <script type="text/javascript">
      var ddlist = $("#RoleId").data("kendoDropDownList")
      ddlist.enable(false);

   ...
Ivan
  • 1,813
  • 16
  • 7
-1

Hello,

The RadComboBox has a jQuery object created on the client-side. In order to disable it, you need to call the disable() function. To enable it, you call the enable() function.

Like so:

    var combo = $find("<%=RadComboBox1.ClientID%>");
    combo.disable();

Or:

    $(".rcbInput").attr('disabled', 'disabled');

I hope that helps.

Abhishek Sharma
  • 281
  • 2
  • 6
-1

Bit of a stab at it, I know nothing about telerik and I'm useless with ASP/C#, but this may work :)

$(document).ready(function(){
    $('#ddlRequired telerik:RadComboBoxItem').change(function()
    {
        if ($(this).val()) == true)
            $('#ddlListItems').attr('Enabled', 'true');
        else
            $('#ddlListItems').attr('Enabled', 'false');
    });
});
Joe
  • 15,669
  • 4
  • 48
  • 83