需要在单选按钮列表选择的CustomValidator文本框(CustomValidator tex

2019-10-17 18:37发布

在我的网页我有一个单选按钮列表和一个文本框。

文本框默认是隐藏的,然后出现如果用户点击是。 一旦他们单击是那么文本之前必须填写他们可以继续进行。

我已经把下面的代码,但它似乎并没有在所有的工作,当按下按钮去继续而不是停止,并要求用户在文本框中输入一些下一页。

function Q12iYes() {           
        document.getElementById('txt12i').style.display = "block"
     }
    function Q12iNo() {
        document.getElementById('txt12i').style.display = "none"
    }      


<asp:RadioButtonList ID="rbtn12" runat="server" RepeatDirection="Horizontal">
    <asp:ListItem Value="Yes" onclick="Q12iYes()" /> <asp:ListItem Value="No"  Selected="True" onclick="Q12iNo()" /> 
    </asp:RadioButtonList>
            <br />

    12.i) If &#39;Yes&#39; please provide details<br />
    <br />
    <asp:TextBox ID="txt12i" runat="server" Height="62px" TextMode="MultiLine" Width="343px"></asp:TextBox>
            <br />                
            <asp:CustomValidator ID="MyTxtBoxValidator" runat="server" ControlToValidate="txt12i" ValidateEmptyText="true" ErrorMessage="Please enter some values into Textbox" 
            ClientValidationFunction="validateMyBtn"  Display="Dynamic"> </asp:CustomValidator>
              <script type="text/javascript">
                  function validateMyBtn(oSrc, args) {
                      var rbtnValue = null;
                      var rbtnList = document.getElementsByName('<%=rbtn12.ClientID %>');
                      var radio = rbtnList[0].getElementsByTagName("input");
                      for (var i = 0; i < radio.length; i++) { if (radio[i].checked) rbtnValue = radio[i].value; }
                      if (rbtnValue == "Yes") { args.IsValid = !(args.Value == "") }
                      else { args.IsValid = true; }
} 
</script> 

<asp:Button ID="btnContinue" runat="server" OnClick="btnContinue_Click" Text="Continue" /> 

我有找如何做到这一点,但没有我看到了无论是工作,或者帮助我理解我要去哪里错了。

任何人都可以帮忙吗?

Answer 1:

CustomValidator不会验证默认是空的文本,所以设置ValidateEmptyText属性 :

<asp:CustomValidator  ValidateEmptyText="true" ID="MyTxtBoxValidator" runat="server" ...

编辑问题是你的JavaScript验证功能,只能在IE浏览器。 下面是工作也是在其他浏览器版本:

function validateMyBtn(oSrc, args) {
      var rbtnList = document.getElementsByName('<%=rbtn12.ClientID %>');
      var noClicked = false;
      for (var x = 0; x < rbtnList.length; x++) {
          if (rbtnList[x].checked) {
              noClicked = rbtnList[x].value == "No";
              break;
          }
      }
      if (noClicked) 
          args.IsValid = true;
      else
          args.IsValid = args.Value.trim().length > 0;
} 


文章来源: CustomValidator textbox required on radiobuttonlist select