1

我正在尝试使用 JQuery 根据对另一个 Telerik RadComboBox 的选择来启用 Telerik RadComboBox。

用例:用户来到页面,启用 ddlRequired,禁用 ddlListItems。如果用户选择“必需”,那么我希望启用 ddlListItems。相反,如果选择“可选”,我想禁用 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>

在尝试了几种方法后,这是我离开的地方。我意识到它并不完整。

function OnSelectedIndexChanged()
{
    var ddl = $find("<%=ddlListItemsQ1.ClientID%>");
    ddl.set_enabled(false);
}
4

5 回答 5

2

虽然这不是真正的 jQuery,但更多的是普通的常规 JavaScript,使用 RadComboBox 的客户端 API,特别是关于RadComboBoxItem的文章(用于启用功能)和OnClientSelectedIndexChanged文章(有关 eventArgs 的详细信息)我创建以下快速小片段:

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

我刚刚使用您提供的 ASPX 代码对其进行了测试,它运行良好。

于 2011-09-12T16:31:02.100 回答
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);

   ...
于 2014-03-14T06:18:31.850 回答
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;
}
于 2013-03-05T07:16:02.820 回答
-1

有点刺,我对telerik一无所知,我对ASP/C#没用,但这可能有用:)

$(document).ready(function(){
    $('#ddlRequired telerik:RadComboBoxItem').change(function()
    {
        if ($(this).val()) == true)
            $('#ddlListItems').attr('Enabled', 'true');
        else
            $('#ddlListItems').attr('Enabled', 'false');
    });
});
于 2011-09-08T23:26:38.507 回答
-1

你好,

RadComboBox 有一个在客户端创建的 jQuery 对象。为了禁用它,您需要调用 disable() 函数。要启用它,请调用 enable() 函数。

像这样:

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

或者:

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

我希望这会有所帮助。

于 2013-10-04T06:57:09.847 回答