【问题标题】:Can't disable Telerik dropdown list with JQuery无法使用 JQuery 禁用 Telerik 下拉列表
【发布时间】:2011-09-08 22:58:49
【问题描述】:

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

【问题讨论】:

    标签: jquery telerik radcombobox


    【解决方案1】:

    虽然这不是真正的 jQuery,但更多的是普通的旧常规 JavaScript,使用 RadComboBox 的 client-side API,特别是 RadComboBoxItem 上的文章(用于启用功能)和 OnClientSelectedIndexChanged 文章(详情在 eventArgs 上)我创建了以下快速小 sn-p:

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

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

    【讨论】:

      【解决方案2】:

      这行不通!

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

      这行得通!

          @(Html.Kendo().DropDownListFor(m => m.RoleId)
              .Name("RoleId")
      
          ...
      
          <script type="text/javascript">
            var ddlist = $("#RoleId").data("kendoDropDownList")
            ddlist.enable(false);
      
         ...
      

      【讨论】:

        【解决方案3】:
        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;
        }
        

        【讨论】:

          【解决方案4】:

          有点刺头,我对 Telerik 一无所知,而且我对 ASP/C# 毫无用处,但是这个可能工作:)

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

          【讨论】:

            【解决方案5】:

            你好,

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

            像这样:

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

            或者:

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

            希望对你有帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-04-14
              • 2016-04-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-10-17
              相关资源
              最近更新 更多