hola,

Les queria comentar que puede dar con la solucion.

Calling ASP.net validators with javascript
http://www.codeproject.com/KB/aspnet/JavascriptValidation.aspx


Modifique la funcion javascript de la siguiente forma:

 function saveGroup() {
 
     if (Page_ClientValidate() == false) {
        return;
     }
 
         var code = $("#<%=txtCode.ClientID%>").getValue();
         var description = $("#<%=txtName.ClientID%>").getValue();
        
 
         $.ajax({
             type: "POST",
             url: "GroupsCalls.aspx/SaveGroup",
             data: "{'code':'" + code + "','description':'" + description + 
"'}",
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             success: function(result) {
                 alert(result.d);
             },
             error: function(XMLHttpRequest, textStatus, errorThrown) {
                 alert(textStatus + ": " + XMLHttpRequest.responseText);
             }
         })
 
 
 O sea agregue el milagroso Page_ClientValidate() y eso es todo.

Yo venia buscando la solucion por otro lado, hasta que una luz me hizo mirar si 
habia alguna funcionalidad para forzar la validacion de los controles de 
asp.net desde javascript.

Gracias


--- El lun 11-may-09, Leandro Tuttini <[email protected]> escribió:
De: Leandro Tuttini <[email protected]>
Asunto: [puntonet] jQuery y RequiredFieldValidator
Para: [email protected]
Fecha: lunes, 11 de mayo de 2009, 1:38 pm

hola,

Se me presento el siguiente problema.

Resulta que intento hacer uso de jQuery, pero se em complico con los controles 
de validaciones de asp.net.

A ver le comento en la pagina tengo varios textbox con sus respectivos 
RequiredFieldValidator y RegularExpressionValidator.

Algo asi:

<asp:TextBox ID="txtCode" Name="txtCode" runat="server" MaxLength="10" />

<asp:RequiredFieldValidator ID="reqCode" runat="server" 
ControlToValidate="txtCode" SetFocusOnError="true"
ErrorMessage="<%$Resources:MainResources,ERR_CODE%>" Display="Dynamic" />

<asp:RegularExpressionValidator ID="regCode" runat="server" 
ControlToValidate="txtCode" 
Display="Dynamic" ErrorMessage="<%$Resources:MainResources,ERR_CODEFORMAT%>" 
SetFocusOnError="True" 
ValidationExpression="[^&lt;&gt;'%*]+"
 ></asp:RegularExpressionValidator>

<asp:Button ID="btnSave" runat="server" OnClientClick="javascript: saveGroup(); 
return false;" Text="Guardar" />

Nota: esto por supuesto no esta asi tirado, en la pagina esta en tablas bien 
ubicado, lo posteo asi para que sea mas legible.
Alli solo puse el textbox Code, pero existe otro para el nombre o la 
descripcion.


El javascript seria el siguiente:

    function saveGroup() {

        var code = $("#<%=txtCode.ClientID%>").getValue();
        var description = $("#<%=txtName.ClientID%>").getValue();
        
        $.ajax({
            type: "POST",
            url:
 "GroupsCalls.aspx/SaveGroup",
            data: "{'code':'" + code + "','description':'" + description + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(result) {
                alert(result.d);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus + ": " +
 XMLHttpRequest.responseText);
            }
        })

Como observaran, si presiono el boton "Guardar" este ejecuta el javascript, sin 
tener en cuanta las validaciones de asp.net.
Ya que el atributo OnClientClick anula las validaciones de asp.net.

La pregunta es, como puede hacer para ejecutar las validaciones de los 
controles asp.net antes de llamar a la funcion javascript "saveGroup" ?
Y por supuesto si alguna falla evitar esta llamada.
Seria como ejecutar la validacion pero en lugar de evitar el submit del 
formaulario, seria evitar la llamada a la funcion javascript "saveGroup".

Buscando pude ver que existe en jQuery un metodo de nombre: ValidatorEnable(). 
Pero esta solo sive para desplegar el texto de la validacion y no para 
ejecutarla.

How to manage ASP.NET validation from
 Javascript with jQuery
http://codeclimber.net.nz/archive/2008/05/14/How-to-manage-ASP.NET-validation-from-Javascript-with-jQuery.aspx


O sea en este caso podria hacer:

    function saveGroup() {

        var code = $("#<%=txtCode.ClientID%>").getValue();
        var description = $("#<%=txtName.ClientID%>").getValue();
        
        if (code == "")
        {
           ValidatorEnable($("#<%= reqCode.ClientID %>")[0], true);
           return;
        }
       
 else
           ValidatorEnable($("#<%= reqCode.ClientID %>")[0], false);

        if (description == "")
        {
           ValidatorEnable($("#<%= reqName.ClientID %>")[0], true);
           return;
        }
        else
           ValidatorEnable($("#<%= reqName.ClientID %>")[0], false);


        $.ajax({
            type: "POST",
            url:
 "GroupsCalls.aspx/SaveGroup",
            data: "{'code':'" + code + "','description':'" + description + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(result) {
                alert(result.d);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus + ": " +
 XMLHttpRequest.responseText);
            }
        })


Como veran agrego manualmente la validacion y con ValidatorEnable(), se muestra 
el mensaje del control de RequiredFieldValidator.

La consulta es como valido el RegularExpressionValidator, este es mas complejo.

Es una macana que el ValidatorEnable() de jQuery no evalue la expresion y 
devuelva si se paso correctamente o no.

Bueno espero se entienda el problema, sino puedeo aportar mas info.
Saludos






      
Yahoo! Cocina
Recetas prácticas y comida saludable
 
Visitá http://ar.mujer.yahoo.com/cocina/


      Yahoo! Cocina
Recetas prácticas y comida saludable
http://ar.mujer.yahoo.com/cocina/

Responder a