2012-02-18 50 views
2

我試圖根據事件禁用窗體。我有一個JQuery腳本,將禁用表/ div的所有輸入等,但DevExpress組合框仍然允許用戶選擇一個選項。控件的輸入部分顯示爲禁用,但是選擇按鈕和下拉菜單仍然有效。如何從客戶端禁用DevExpress MVC組合框(JS/JQuery)

作爲DevExpress客戶端API和Jquery的新手,我的問題是:如何使用跨瀏覽器兼容的方式將控件設置爲禁用?

這裏是我目前有

// jQuery代碼

// Disable all input types in the table 
$('#addressTable :input').attr('disabled', true); 

// Disable DevExpress MVC Combobox **(Fails)** 
$('#StateProvinceType.StateProvinceTypeId').SetEnabled(false); 

// HTML擴展代碼

@Html.DevExpress().ComboBox(settings => 
{ 
    settings.Properties.DropDownStyle = DropDownStyle.DropDown; 
    settings.Name = "StateProvinceType.StateProvinceTypeId"; 
    settings.Properties.ValueType = typeof(int); 
}).BindList(Model.States).GetHtml() 
+0

使用Name屬性來獲取直接訪問客戶端程序對象(不是ID選擇器) – Mikhail 2012-02-20 08:08:07

回答

4

名稱/ClientInstanceName屬性是由點分開,有必要從「窗口」對象通過檢索「ASPxClientControl.GetControlCollection()。GetByName()」方法(由於JavaScript的具體情況)。不要忘記,以使客戶端API:

@Html.DevExpress().ComboBox(settings => { 
    settings.Name = "StateProvinceType.StateProvinceTypeId"; 

    settings.Properties.Items.Add("1", "1"); 
    settings.Properties.Items.Add("2", "2"); 
    settings.Properties.Items.Add("3", "3"); 

    settings.Properties.EnableClientSideAPI = true; 
}).GetHtml() 

<input type="button" onclick="OnClick();" value="Toggle" /> 

<script type="text/javascript"> 
    var enabled = true; 

    function OnClick() { 
     var comboBox = ASPxClientControl.GetControlCollection().GetByName("StateProvinceType.StateProvinceTypeId"); 
     comboBox.SetEnabled(!enabled); 
     enabled = !enabled; 
    } 
</script> 

否則,客戶端程序對象可直接在全球範圍內:

@Html.DevExpress().ComboBox(settings => { 
    settings.Name = "comboBox"; 

    settings.Properties.Items.Add("1", "1"); 
    settings.Properties.Items.Add("2", "2"); 
    settings.Properties.Items.Add("3", "3"); 

    settings.Properties.EnableClientSideAPI = true; 
}).GetHtml() 

<input type="button" onclick="OnClick();" value="Toggle" /> 

<script type="text/javascript"> 
    var enabled = true; 

    function OnClick() { 
     comboBox.SetEnabled(!enabled); 
     enabled = !enabled; 
    } 
</script> 
+0

這是有效的,正是我所需要的。我也讚賞簡單和複雜的對象之間的區別,一個很好的制定和書面答覆,謝謝。 – PortageMonkey 2012-02-20 15:04:21

+0

感謝您的客氣話;) – Mikhail 2012-02-20 15:43:10

0

當ID的有一個點,你需要使用雙反斜線。所以,你需要改變:

$('#StateProvinceType.StateProvinceTypeId') 

爲:

$('#StateProvinceType\\.StateProvinceTypeId')