【问题标题】:Dropdown list enable required on textbox when selected value .net选择值时需要在文本框上启用下拉列表.net
【发布时间】:2014-01-02 13:03:40
【问题描述】:

我有一个下拉列表,当所选值等于“关闭”时。我希望启用必填字段。这个我试过了

<asp:DropDownList ID="DropDownList9" runat="server" 
                            DataSourceID="SqlDataCaseStatus" DataTextField="CaseStatus" 
                            DataValueField="CaseStatus" Text='<%# Bind("Case_Status") %>' AutoPostBack="False" onchange="if(this.options[this.selectedIndex].text='Closed')ValidatorEnable('RequiredFieldValidatorDateOfWriteOff', true);else ValidatorEnable('RequiredFieldValidatorDateOfWriteOff', false); " >
                        </asp:DropDownList>

<asp:RequiredFieldValidator ID="RequiredFieldValidatorDateOfWriteOff" runat="server" 
                ControlToValidate="TextBox13" 
                ErrorMessage="Date Of Write Off is a Required Field">*</asp:RequiredFieldValidator>

但是当我更改下拉菜单时,我得到一个错误:

Microsoft JScript runtime error: Unable to set value of the property 'visibility': object is null or undefined.

任何帮助将不胜感激

【问题讨论】:

标签: c# javascript jquery asp.net


【解决方案1】:

在将文本与“已关闭”进行比较时,首先尝试将 = 更改为 ==。

【讨论】:

    【解决方案2】:

    您需要使用Enabled 属性。试一试,代码非常很粗糙,仅作为示例。我已将行为提取到一种方法中,只是为了便于演示。

    <body>
        <form id="form1" runat="server">
            <script type="text/javascript">
    
                function EnableValidator() {
                    var dropdown1 = document.getElementById('DropDownList1');
                    var a = dropdown1.options[dropdown1.selectedIndex];
    
                    if (a.text == "ValidateYes1") {
                        document.getElementById("RequiredFieldValidator1").enabled = true;
                    } else {
                        document.getElementById("RequiredFieldValidator1").enabled = false;
                    }
                };
            </script>
    
        <div>
    
        </div>
        <asp:DropDownList ID="DropDownList1" runat="server" onchange="EnableValidator();">
            <asp:ListItem>ValidateYes1</asp:ListItem>
            <asp:ListItem>ValidateNo2</asp:ListItem>
        </asp:DropDownList>
    
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    
        <asp:RequiredFieldValidator
            ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator><asp:Button
                ID="Button1" runat="server" Text="Button" />
        </form>
    </body>
    

    【讨论】:

    • 我的 DropDownList 位于 DetailsView 中,因此无法访问该值 .... 显示为 Null,有什么想法吗?
    • 那是因为控件的客户端ID是由ASP控制的。您可以在 JavaScript 中尝试 var dropdown1 = document.getElementById(); (对其他控件遵循相同的约定。)也看看这个问题:stackoverflow.com/questions/5473111/…
    【解决方案3】:

    ValidatorEnable 需要控制并且您正在传递控制的 id

    ValidatorEnable('RequiredFieldValidatorDateOfWriteOff', true)
    

    这就是您收到对象空错误的原因。

    请改成

    ValidatorEnable(document.getElementById('<%= RequiredFieldValidatorDateOfWriteOff.ClientID %>'), true);
    

    【讨论】:

      【解决方案4】:
      <asp:DropDownList ID="DropDownList9" runat="server" 
                              DataSourceID="SqlDataCaseStatus" DataTextField="CaseStatus" 
                              DataValueField="CaseStatus" Text='<%# Bind("Case_Status") %>' AutoPostBack="False" onchange="validateSelection(this);" >
                          </asp:DropDownList>
      
      <script language="javascript" type="text/javascript">
      
          function validateSelection(drp) {
      
              var vc = document.getElementById('<% = RequiredFieldValidatorDateOfWriteOff.ClientID %>');
      
              if (drp.text == 'Closed') {
      
                  ValidatorEnable(vc, true);
      
              }
              else {
                  ValidatorEnable(vc, false);
              }
      
          }
      
      
      </script>
      

      【讨论】:

      • 试过了,但不高兴,同意它应该可以正常工作,但只是想先让它工作:-) 谢谢
      • 我的 DropDownList 位于 DetailsView 中,因此无法访问该值 .... 显示为 Null,有什么想法吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多