none
pasar una variable a una función de ClientValidationFunction de customvalidator RRS feed

  • Pregunta

  • Hola a todos:

    Yo tengo

    function existe_correo_mostrar_valoraciones(source, arguments)
    {if (document.getElementById('ctl00_cphcontenido_gvvaloraciones_ctl03_chkmostrar').checked)
        if (document.getElementById('ctl00_cphcontenido_gvvaloraciones_ctl03_txtcorreo').value=='') {
            arguments.IsValid =false}
        else
            arguments.IsValid = true
    }

    Esta es una función de ClientValidationFunction 

    El customvalidator es

                        <asp:CustomValidator ValidationGroup="valoraciones" Display="None" ForeColor="red" ErrorMessage="No hay correo a mostrar" ClientValidationFunction="existe_correo_mostrar_valoraciones" runat="server" /> 
    La id 
    ctl00_cphcontenido_gvvaloraciones_ctl03_chkmostrar

    puede cambiar según las filas del gridview donde está el chkmostrar y el customvalidator. ¿cómo paso la id, el ctl03 y cómo hallo este id?

    Gracias de antemano


    • Editado volar.2014 martes, 18 de agosto de 2015 17:39
    martes, 18 de agosto de 2015 17:38

Respuestas

  • hola

    si defines un alert en la validacion puedes evaluar que valor toman los controles

    por ejemplo si usas

    alert(chkmostrar.checked);

    que valor observas

    ----

    porque no usas

     if (chkmostrar.checked && txtcorreo.value=='') {

       //codigo

    }


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 18 de agosto de 2015 19:12

Todas las respuestas

  • hola

    es que tendrias que ubicar el control <asp:CustomValidator dentro del template del gridview

    entonces deberias aplicar la seleccion tomando el source que recibes por parametro, no puede ponerlo fijo

    Passing values to custom validator client function

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 18 de agosto de 2015 18:11
  • Hola:

    Gracias, Leandro.

    El customvalidator lo tengo en un edittemplate.

    Este es el gridview

                <asp:TemplateField HeaderText="Correo elec." SortExpression="correo">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtcorreo" MaxLength="80" Text='<%# Bind("correo") %>' runat="server" />
                        <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="valoraciones" ControlToValidate="txtcorreo" ErrorMessage="Correo elec. inválido" Display="None" ValidationExpression="^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$" runat="server" />
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:label text='<%# IIf(Eval("correo") <> "", Eval("correo"), "<span class=""centrado"">no</span>")%>' runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Mostrar" ItemStyle-CssClass="centro" SortExpression="mostrar">
                    <EditItemTemplate>
                        <asp:checkbox ID="chkmostrar" Checked='<%# Bind("mostrar") %>' runat="server" />
                        <asp:CustomValidator ValidationGroup="valoraciones" Display="None" ForeColor="red" ErrorMessage="No hay correo a mostrar" ClientValidationFunction="existe_correo_mostrar_valoraciones" runat="server" /> 
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:label text='<%#iif(eval("mostrar"),"sí","no")%>' runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>

    Cambié la función acorde al enlace que me diste. Queda

    function existe_correo_mostrar_valoraciones(source, arguments)
    { var chkmostrar=document.getElementById(source.chkmostrar);
      var txtcorreo=document.getElementById(source.txtcorreo);
        if (chkmostrar.checked)
        if (txtcorreo.value=='') 
            arguments.IsValid =false
        else
            arguments.IsValid = true
    }

    Pero ahora no hace nada.

    Gracias de nuevo


    • Editado volar.2014 martes, 18 de agosto de 2015 19:24
    martes, 18 de agosto de 2015 18:59
  • hola

    si defines un alert en la validacion puedes evaluar que valor toman los controles

    por ejemplo si usas

    alert(chkmostrar.checked);

    que valor observas

    ----

    porque no usas

     if (chkmostrar.checked && txtcorreo.value=='') {

       //codigo

    }


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 18 de agosto de 2015 19:12