none
Como mantener las validaciones incluso después de oprimir el button GRABAR en JQuery RRS feed

  • Pregunta

  • Hola gente:

    Resulta que estoy tratando de validar los campos de texto en Jquery estoy trabajando con ASP.Net, funciona bien ya que cada vez que pico un textbox y luego salgo queda remarcado en rojo y con una leyenda que dice "Ingrese datos por favor!" y así en cada textbox que puse en mi formulario , el problema es cuando oprimo el botón Grabar con las validaciones activadas los campos de texto que antes estaban marcados en color rojo con su respectiva leyenda ,ahora no quedan marcados y deja de funcionar el JQuery.

    alguna recomendación que puedan enviarme se los agradecería

    Pablo Farias


    Pablo Cesar Farias

    viernes, 27 de enero de 2017 14:17

Respuestas

  • Hola Gente del mundo del desarrollo: Les comento que acabo de encontrar el inconveniente donde mi función JQuery deja de funcionar después de hacer  PostBack mi Pagina 

    Les Recuerdo que cuando se carga la Pagina por primera vez el JQuery (este JQuery sólo valida los campos vacíos y funciona junto con una pagina de estilos .Css) funciona Ok, el tema estaba en cualquier botón o evento que haga postback hace perder la funcionalidad  del Jquery, 

    Entonces modifiqué mi JQuery de la siguiente manera 

        

    <script src="scripts/ScriptPCF/jquery.validate.js" type="text/javascript"></script>

        <script type="text/javascript">

            jQuery(function ($) {
                Validar();
            });

            $(function Validar() {
                $("#<%= txtNumeroCuenta.ClientID %>").validate({
                    expression: "if (VAL) return true; else return false;",
                    message: "Ingrese Numero de Cuenta"
                });

                $("#<%= cmbTipoNomenclatura.ClientID %>").validate({
                    expression: "if (VAL != '0') return true; else return false;",
                    message: "Selecciones el tipo de Nomenclatura"
                });

                $("#<%= cmbTipoNomenclatura.ClientID %>").validate({
                    expression: "if (VAL != '0') return true; else return false;",
                    message: "Seleccione el tipo de Nomenclatura"
                });

                $("#<%= txtNomenclatura.ClientID %>").validate({
                    expression: "if (VAL) return true; else return false;",
                    message: "Ingrese una Nomenclatura Parcelaria"
                });

                $("#<%= txtExpedienteCreacion.ClientID %>").validate({
                    expression: "if (VAL) return true; else return false;",
                    message: "Ingrese el número de Expediente"
                });        });

        </script>

    Donde el primer JQuery llama al otro JQuery que valida los campos

     jQuery(function ($) {
                Validar();
            });

    Entonces en el codeBehind de ASP.Net dentro del la Page_Load

    coloco lo siguente

        protected void Page_Load(object sender, EventArgs e)
        {

                 ScriptManager.RegisterStartupScript(this, typeof(Page), "validate", "Validar();", true);

        }

    Aquí "validate" se refiere a la propiedad que esta despues del elemento, y Validar() es el nombre de la funcion del JQuery

    Entonces funcionó ok y el JQuery sigue funcionando incluso después de que se genere algún evento,

    Muchas gracias, que tengan muy buen día y espero sirva de algo esto 


    Pablo Cesar Farias

    miércoles, 1 de febrero de 2017 13:18

Todas las respuestas

  • hola

    pero el boton grabar realiza un post el servidor ? se actualiza la pagina

    como implementas las validaciones de jquery ? usas algun plugin en concreto

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 27 de enero de 2017 17:11
  • Si hace un post al SERVER y antes puse un Event.preventDefault pero no hace, nada para colmo luego de poner el event.prevenDefault ya ni reconoce  este comando y lanza error que indica que no es cálida la expresion

    ASÍ esta mi validacion

        <script src="scripts/jquery-1.11.2.min.js" type="text/javascript"></script>

        <script src="scripts/ScriptPCF/jquery.validate.js" type="text/javascript"></script>//este hace validaciones

        <script type="text/javascript">

            jQuery("#<%btnSolicitarCertificado.ClientID %>").click(function (event) {
                event.preventDefault();
            });
            jQuery(function event() {

                $("#<%= txtNumeroCuenta.ClientID %>").validate({
                    expression: "if (VAL) return true; else return false;",
                    message: "*"
                });

                $("#<%= cmbTipoNomenclatura.ClientID %>").validate({
                    expression: "if (VAL != '0') return true; else return false;",
                    message: "Selecciones el tipo de Nomenclatura"
                });


        </script>


    Pablo Cesar Farias

    viernes, 27 de enero de 2017 18:26
  • hola

    si la idea es evitar el post al servidor en un boton de asp.net no se usa jquery, deberias usar el OnClientClick

    <asp:Button ... OnClientClick="return NombreFuncion();" >
    
    <script>
    
       function NombreFuncion(){
    
          //resto codigo
    
          return false;
    
       }
    
    </script>


    si devuelve un false no se ejecutara el evento al servidor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 27 de enero de 2017 21:05
  • el evento Return en el boton seguido de la funcion NombreFuncion() no funciona

    Pablo Cesar Farias

    lunes, 30 de enero de 2017 17:31
  • hOLA Leandro:El JQuery funciona bien pero el inconveniente que tengo es que después de cargar la pagina con el botón que indica grabar, se pierden las validaciones de Jquery, y mi intención es que se mantengan activas ya que el usuario se daria cuenta cuales son los campos de texto que debe completar, te paso las capturas

    Aquí demuestro que funciona ok el Jquery

    Pero... Cuando le doy al botón Grabar Solicitud

    surge esta ventana que indica lo que falta completar , con lo cual está bien 

    Y aquí deja de funcionar el Jquery,

    este es el botón que ya tiene un evento OnClienClick() que sirve para otro evento Javascript

    Entonces mi pregunta es: Como puedo hacer para mantener las validaciones incluso después de oprimir el boton Gracias Por responder

    Saludos PABLO CESAR FARIAS


    Pablo Cesar Farias


    lunes, 30 de enero de 2017 19:33
  • Hola,

    Puedes hacer que tu función showMdlCargando() sea el que devuelva true si las validaciones son correctas y false si las validaciones son incorrectas. Así de esta forma en tu botón pondrías onClientClick="return showMdlCargando();"

    De esa manera si las validaciones no son correctas el botón no realiza el postback.

    lunes, 30 de enero de 2017 19:38
  • Hola Luis Rojas 87 , ya lo he probado pero no hace nada, se queda sin ningún comportamiento

    Pablo Cesar Farias

    lunes, 30 de enero de 2017 20:02
  • La funcion showMdlCargando() es la que valida los datos de entrada?
    lunes, 30 de enero de 2017 22:31
  • Hola Gente del mundo del desarrollo: Les comento que acabo de encontrar el inconveniente donde mi función JQuery deja de funcionar después de hacer  PostBack mi Pagina 

    Les Recuerdo que cuando se carga la Pagina por primera vez el JQuery (este JQuery sólo valida los campos vacíos y funciona junto con una pagina de estilos .Css) funciona Ok, el tema estaba en cualquier botón o evento que haga postback hace perder la funcionalidad  del Jquery, 

    Entonces modifiqué mi JQuery de la siguiente manera 

        

    <script src="scripts/ScriptPCF/jquery.validate.js" type="text/javascript"></script>

        <script type="text/javascript">

            jQuery(function ($) {
                Validar();
            });

            $(function Validar() {
                $("#<%= txtNumeroCuenta.ClientID %>").validate({
                    expression: "if (VAL) return true; else return false;",
                    message: "Ingrese Numero de Cuenta"
                });

                $("#<%= cmbTipoNomenclatura.ClientID %>").validate({
                    expression: "if (VAL != '0') return true; else return false;",
                    message: "Selecciones el tipo de Nomenclatura"
                });

                $("#<%= cmbTipoNomenclatura.ClientID %>").validate({
                    expression: "if (VAL != '0') return true; else return false;",
                    message: "Seleccione el tipo de Nomenclatura"
                });

                $("#<%= txtNomenclatura.ClientID %>").validate({
                    expression: "if (VAL) return true; else return false;",
                    message: "Ingrese una Nomenclatura Parcelaria"
                });

                $("#<%= txtExpedienteCreacion.ClientID %>").validate({
                    expression: "if (VAL) return true; else return false;",
                    message: "Ingrese el número de Expediente"
                });        });

        </script>

    Donde el primer JQuery llama al otro JQuery que valida los campos

     jQuery(function ($) {
                Validar();
            });

    Entonces en el codeBehind de ASP.Net dentro del la Page_Load

    coloco lo siguente

        protected void Page_Load(object sender, EventArgs e)
        {

                 ScriptManager.RegisterStartupScript(this, typeof(Page), "validate", "Validar();", true);

        }

    Aquí "validate" se refiere a la propiedad que esta despues del elemento, y Validar() es el nombre de la funcion del JQuery

    Entonces funcionó ok y el JQuery sigue funcionando incluso después de que se genere algún evento,

    Muchas gracias, que tengan muy buen día y espero sirva de algo esto 


    Pablo Cesar Farias

    miércoles, 1 de febrero de 2017 13:18