2011-09-08 39 views
1

我想使用JQuery來啓用Telerik RadComboBox基於另一個Telerik RadComboBox的選擇。無法禁用與JQuery Telerik下拉列表

使用案例:用戶進入頁面,啓用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); 
} 

回答

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

雖然這是不是真的使用RadComboBox的client-side 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代碼測試過它,它工作正常。

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

您好,

的radcombobox控件對客戶端創建的jQuery對象。爲了禁用它,你需要調用disable()函數。要啓用它,請調用enable()函數。

像這樣:

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

或者:

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

我希望幫助。

0

這不行!

$('#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); 

    ...