none
Validar un Radiobuttonlist teniendo un checkbox en asp .net y vb RRS feed

  • Pregunta

  • Hola Todos

    Mi pregunta es la siguiente: tengo un form donde tengo un radioButtonList, un CheckBox y Un Button

    como valido que cuando no este checked en true el checkbox todas las opciones del RBL se desactiven y únicamente me no me deje pasa cuando checked este true el checkbox y todas las opciones del RBL este activas.

    este es el código:

          <asp:RadioButtonList id="RBLPrueba" runat="server" ValidationGroup="RadioTest">
             <asp:ListItem Value="1">Item 1</asp:ListItem>
             <asp:ListItem Value="2">Item 2</asp:ListItem>
             <asp:ListItem Value="3">Item 3</asp:ListItem>
             <asp:ListItem Value="4">Item 4</asp:ListItem>
             <asp:ListItem Value="5">Item 5</asp:ListItem>
             <asp:ListItem Value="6">Item 6</asp:ListItem>
          </asp:RadioButtonList>

          <asp:CustomValidator runat="server"
            ClientValidationFunction="ValidateVictimas"
            ID="cvRadioButtonList"
            Display="Dynamic" 
            ErrorMessage="*Seleccione Item"
            ControlToValidate="RBLPrueba" 
            ValidationGroup="RadioTest">
          </asp:CustomValidator>

          <asp:CheckBox id="ChkVictimas" 
               OnCheckedChanged="chkVictimas_CheckedChanged" 
               Text="Victimas" 
               Checked=true AutoPostBack="true" 
               runat="server" />

          <asp:Button id="Button1" 
               Text="Submit" 
               OnClick="Button1_Click"
               CausesValidation="True"
               runat="server"/>

    Tengo esta funcion en VB

       <script runat="server">
           Sub Button1_Click(Source As Object, e As EventArgs)
               If RBLPrueba.SelectedIndex > -1 Then
                   Label1.Text = "You selected: " & RBLPrueba.SelectedItem.Value
               End If
           End Sub

           Sub chkVictimas_CheckedChanged(sender As Object, e As EventArgs)
               If ChkVictimas.Checked = True Then
                   RBLPrueba.Enabled = True
               Else
                   RBLPrueba.Enabled = False
                   RBLPrueba.SelectedIndex = -1
               End If
           End Sub
       </script>

    la función que utilizo con javascript es esta:

      

    <script type="text/javascript">
    function ValidateVictimas(source, arguments) {
            var RBL = document.getElementById(source.controltovalidate);
            var radiobuttonlist =  RBL.getElementsByTagName("input");            
            var isChecked = $("*[id$='chkVictimas']").is(":checked");
            var counter = 0;
            var atLeast = 1
            for (var i = 0; i < radiobuttonlist.length; i++) {
                if (radiobuttonlist[i].checked) {
                    counter++;
                }
            }
            if ((atLeast != counter) && (isChecked)) {
                arguments.IsValid = false;
                return arguments.IsValid;
            }
            arguments.IsValid = true;
            return arguments.IsValid;
    }

    </script>

    como puedo validar el radioButtonList únicamente cuando los item estén habilitados,. esto es cuando el checkBox este en true y no se ha seleccionado ningun elemento de la lista.

    Muchas Gracias.

    miércoles, 30 de agosto de 2017 2:59