ASP.NET ejecutar OnClick si tengo un preventDefault

publicado por: Anonymous

Buenas comunidad, sucede lo siguiente:

<asp:Button ID="btnGuardar" runat="server" Text="Button" OnClick="btnGuardar_Click" />

<script type="text/javascript">
     $(document).ready(function () {
        $('#<%= btnGuardar.ClientID %>').click(function (e) {
            if (document.getElementById("<%=txtPatente.ClientID%>").value == "") {
                document.getElementById("<%=alertResult.ClientID%>").className = "alert alert-danger";
                document.getElementById("<%=txtPatente.ClientID%>").focus();
                $('#<%= lblEstado.ClientID %>').html("Ingrese una patente");

            }
            e.preventDefault();
        });
    });
    </script>

El script la uso para una validación por lo que necesito que no haga un postback.. pero también necesito que se ejecute el código del lado del servidor y no lo estaría realizando de esta forma, ¿Alguna sugerencia?

solución

No puedes mezclar evento de asp.net con código del lado del cliente y que funcionen integrados, o usas eventos o usas codigo javascript (o jquery)

Por el planteo que realizas recomendaría evalues de hacer uso del $.ajax para poder invocar webmethod del lado del servidor, en definitiva te olvidas de los eventos de asp.net y trabajas con evento del lado del cliente invocando al servidor usando ajax

Calling ASP.Net WebMethod using jQuery AJAX

El boton debería ser un html

<input type='button' value='Guardar' id='guardar' />

entonces en javascript

<script type="text/javascript">
     $(function () {

        $('#guardar').click(function (e) {

            if ($("#<%=txtPatente.ClientID%>").val() == "") {
                $("#<%=alertResult.ClientID%>").addClass("alert alert-danger");
                $("#<%=txtPatente.ClientID%>").focus();
                $('#<%=lblEstado.ClientID %>').html("Ingrese una patente");
                return;
            }

             $.ajax({
                type: "POST",
                url: "page1.aspx/WebMethodName",
                data: '{}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(data){
                    //codigo
                },
                failure: function(response) {
                    alert(response.d);
                }
            });


        });
    });
</script>

de esta forma tu controlas las validaciones del lado del cliente y cuando invocar la funcionalidad al servidor

En realidad los textbox tambien deberian ser html y el label reemplazarlo por un div

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *