2012-02-18 6 views
2

イベントに基づいてフォームを無効にしようとしています。私はテーブル/ divなどのすべての入力を無効にするJQueryスクリプトを持っていますが、DevExpressコンボボックスは引き続きユーザーがオプションを選択できるようにします。コントロールの入力部分は無効になっていますが、選択ボタンとドロップダウンは機能しています。クライアントからのDevExpress MVCコンボボックスを無効にする方法(JS/JQuery)

DevExpressクライアントAPIとJqueryの新機能ですが、私の質問は次のとおりです。JQueryをクロスブラウザと互換性のある方法で無効にするにはどうすればよいですか?ここで

は、IDのドットを持っている場合、あなたは二重のバックスラッシュを使用する必要があります私は現在持っている

// 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

答えて

4

:について

$('#StateProvinceType.StateProvinceTypeId') 

を:だから、変更する必要があります"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

+0

あなたの優しい言葉に感謝します;) – Mikhail

0

ものです。 名前/ClientInstanceNameプロパティは、ドットで区切られた場合、経由して、「ウィンドウ」オブジェクトから取得する必要がある

$('#StateProvinceType\\.StateProvinceTypeId') 
関連する問題