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
http://ar.mujer.yahoo.com/cocina/

Responder a