无法使用 JQuery 禁用 Telerik 下拉列表

发布于 2024-12-04 05:18:46 字数 1491 浏览 2 评论 0 原文

我正在尝试使用 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);
}

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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

伴梦长久 2024-12-11 05:18:46

虽然这并不是真正的 jQuery,更多只是普通的常规 JavaScript,使用 客户端 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 代码对其进行了测试,并且运行良好。

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.

浅忆 2024-12-11 05:18:46

这不行!

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

这有效!

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

    ...

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

   ...

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);

   ...
海的爱人是光 2024-12-11 05:18:46
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;
}
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;
}
回忆躺在深渊里 2024-12-11 05:18:46

稍微尝试一下,我对 Telerik 一无所知,而且我对 ASP/C# 毫无用处,但这可能可以工作:)

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

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');
    });
});
空袭的梦i 2024-12-11 05:18:46

您好,

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

就像这样:

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

或者:

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

我希望有帮助。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文