dojo.connect与dojox.form.DropdownSelect

时间:2012-02-02 01:01:28

标签: dojo

您好我的Razor表格上有3个控件。 1)组合框,2)DropdownSelect 3)文本输入。 首先,我从Combobox中选择值,因此我向DropdownSelect添加选项。从DropdownSelect中选择一个值后,我想启用或禁用第三个输入框。

当我在1st Combobox中选择一个值时,我可以填充第二个下拉选项。但我无法根据第二次下拉值更改启用或禁用第三个输入框。

以下是示例代码。

<input type="text" dojoType="dijit.form.ComboBox" style="margin-top: 5px;" class="left" store="regionStore" queryExpr="${0}" hasDownArrow="true" 
    searchAttr="text" labelAttr="name" title="Region" id="Plan_RegionName" jsId="Plan_RegionName" name="Plan.RegionName" required="true" placeholder="None" ignoreCase="true" /> 

<select name="Plan.PlanType" id="Plan_PlanType" title="Plan Type" dojoType="dojox.form.DropDownSelect" required="true" maxHeight="125" labelwidth="185px" style="width: 180px">    
    <option value="" selected="selected">-- Select One --</option>    
    <option value="Trial">Trial</option>    
    <option value="PerUser">Per User</option>    
    <option value="PerUnit">Per Unit</option>    
    <option value="Reseller">Reseller</option>    
    <option value="Other">Other</option>    
</select>        
<div dojoType="dijit.form.ValidationTextBox" style="width: 180px; margin-top: 5px;" id="Plan_Name" title="Plan Name" name="Plan.Name" required=&quot;true&quot; 
    missingMessage="This value is required" promptMessage="Enter a value" value="">

<script text/type="javascript"> 
    dojo.addOnLoad(function () {
            dojo.connect(Plan_RegionName, "onChange", Plan_RegionName, function (evt) {
                alert("Combo box Changed!");
            });

            dojo.connect(Plan_PlanType, "onChange", Plan_PlanType, function (evt) {
                alert("Dropdown Changed!");
            });    
        });

</script>

我收到Combox框更改的提醒消息,但没有获取Dropdown更改。

任何想法。请指教。

感谢, 的Vivek

2 个答案:

答案 0 :(得分:0)

由于“Plan_PlanType是一个dojox.form,你应该能够检查它是否'有效'作为启用最后一个文本框的方法。所以,像:

 if(dojo.byId("Plan_PlanType").validate()){
    dojo.byId("Plan_Name").set("enabled", true);
}

但是,您可能需要将其包装在dojo.connect函数中。

答案 1 :(得分:0)

我使用了Selectbox的onChange事件。 这是一个例子。

<select name="@name" id="@id" title="@ViewData.ModelMetadata.GetDisplayName()" onChange="enablePlanname(this.getValue())" dojoType="dijit.form.ComboBox" required="true" maxHeight="125" style="width: 180px; margin-top: 5px;">
@if (String.IsNullOrEmpty(Model))
{
    <option value="" selected="selected">-- Select One --</option>
}
@foreach (CurrencyType bt in Enum.GetValues(typeof(CurrencyType)))
{ 
    bool selected = false;
    if (bt.ToString() == Model)
    {
        selected = true;
    }
    <option value="@bt.ToString()"@(selected ? " selected=\"selected\"" : "")>@bt.GetDisplayName()</option>
}
</select>

<script type="text/javascript">

function enablePlanname(value) {
        var CurrentTextBox = dijit.byId('Region_Currency');
        if (value == "other") {            
            CurrentTextBox.set("disabled", false);
        }
        else {
            CurrentTextBox.set("disabled", true);
        }
    }

</script>

感谢您的帮助。