none
No se ejecuta una función JavaScript desde C# RRS feed

  • Pregunta

  • Tengo una función en JavaScript usando jquery, lo único que hace es ocultar un div y mostrar otro con efectos de deslizamiento. La finalidad es que cuando el usuario acceda a la página se muestre el contenido usando algunas animaciones de jquery, mi problema es que no ejecuta dicha acción después de hacer las validaciones correspondientes a la base de datos para que pueda acceder (el cual no pondré el código ya que no es relevante), simplemente no hace nada.

    Ya me aseguré que la función sí funciona ya que la he invocado desde OnClientClick (del lado del cliente), pero cuando la quiero ejecutar desde OnClick (del lado del servidor) no hace nada.

    Aquí el código del aspx, creo que sólo hay que hacer énfasis a la función Acceso() de igual manera puse todo.

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="ExamenPraxis.Login" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <style type="text/css">
            .style1
            {
                width: 30px;
            }
            .style2
            {
                width: 137px;
            }
        </style>
    </head>
    <body onload="Inicio();">    
        <script type="text/javascript" src="Scripts/jquery-2.0.2.js"></script>
        <script type="text/javascript">
            function Inicio() {
                var dContenido = $("#dContenido");
                dContenido.hide();
    
    
            }
    
            function Acceso() {
                $("#dLogin").slideUp(700);
                $("#dContenido").fadeIn("slow");
            }
    
            function ValidaAcceso() {
                $("#tdAlertaUsuario").empty();
                $("#tdAlertaPass").empty();
    
                if (document.getElementById("txtUsuario").value.length == 0) {
                    $("#tdAlertaUsuario").html("<font color='red'>Debe introducir un usuario.</font>");
                    //alert('Debe introducir un usuario.');
                    return false;
                }
    
                
    
                if (document.getElementById("txtPass").value.length == 0) {
                    $("#tdAlertaPass").html("<font color='red'>Debe introducir la contraseña.</font>");
                    //alert('Debe introducir la contraseña.');
                    return false;
                }
                return true;
            }
    
            function ValidaCamposFactura() {
                if (document.getElementById("txtDesc").value.length == 0) {
                    alert('Debe introducir una descripción.');
                    return false;
                }
    
                if (document.getElementById("txtImporte").value.length == 0) {
                    alert('Debe introducir el importe.');
                    return false;
                }
    
                if (document.getElementById("txtFecha").value.length == 0) {
                    alert('Debe introducir la fecha.');
                    return false;
                }
    
                return true;
            }
    
            function ValidaSoloNumeros() {
                if ((event.keyCode < 48) || (event.keyCode > 57))
                    event.returnValue = false;
            }
        </script>
        <form id="form1" runat="server">
            <center>
                <div id="dLogin">
                    <table>
                        <tr>
                            <td class="style1" align="right">
                                <asp:Label ID="Label1" runat="server" Text="Usuario"></asp:Label>
                            </td>
                            <td align="left" class="style2">
                                <asp:TextBox ID="txtUsuario" runat="server" Width="152px" MaxLength="30"></asp:TextBox>
                            </td>
                            <td id="tdAlertaUsuario" align="left" width="200"></td>
                        </tr>
                        <tr>
                            <td class="style1" align="right">
                                <asp:Label ID="Label2" runat="server" Text="Contraseña"></asp:Label>
                            </td>
                            <td align="left" class="style2">
                                <asp:TextBox ID="txtPass" runat="server" TextMode="Password" Width="152px" 
                                    MaxLength="30"></asp:TextBox>
                            </td>
                            <td id="tdAlertaPass" align="left"></td>
                        </tr>
                        <tr>
                            <td></td>
                            <td align="right">
                                <asp:Button ID="btnIngresar" runat="server" Text="Ingresar" 
                                    OnClientClick="return ValidaAcceso();" onclick="btnIngresar_Click" />
                                
                            </td>
                            <td></td>
                        </tr>
                    </table>
                </div>
                <%--<img id="imgPrueba" alt="Prueba" 
                                    src="co2312620a.jpg" height="320" width="218" />--%>
            </center> 
            <div id="dContenido">
                <center>
                    <asp:Label ID="Label3" runat="server" Text="Ingresar Nueva Factura" 
                        Font-Bold="True" Font-Size="Larger" ForeColor="#0000CC"></asp:Label>
                    <br />
                </center>
                <table style="width:100%;">
                    <tr>
                        <td>
                            <asp:Label ID="Label4" runat="server" Text="Descripción"></asp:Label>
                        </td>
                        <td>
                            <asp:TextBox ID="txtDesc" runat="server" MaxLength="500" Width="423px"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:Label ID="Label5" runat="server" Text="Importe"></asp:Label>
                        </td>
                        <td>
                            <asp:TextBox ID="txtImporte" runat="server" MaxLength="12" onkeypress="ValidaSoloNumeros();"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:Label ID="Label6" runat="server" Text="Fecha"></asp:Label>
                        </td>
                        <td>
                            <asp:TextBox ID="txtFecha" runat="server" MaxLength="10"></asp:TextBox>
                            <asp:Label ID="Label7" runat="server" Text="(dd/mm/yyyy)"></asp:Label>
                        </td>
                    </tr>
                </table>
                <asp:Button ID="btnIngFac" runat="server" Text="Ingresar Factura" 
                    OnClientClick = "return ValidaCamposFactura();"  onclick="btnIngFac_Click" />
    
                <br />
                <br />
                <center>
                <asp:Label ID="Label8" runat="server" Font-Bold="True" Font-Size="Larger" 
                    ForeColor="#0000CC" Text="Facturas"></asp:Label>
                </center>
                <br />
    
                <asp:GridView ID="gvFacturas" runat="server">
                </asp:GridView>
                <br />
                <asp:GridView ID="gvAgrupacion" runat="server">
                </asp:GridView>        
            </div>
            
        </form>
    </body>
    </html>
    

    Aquí está el evento que está en el código aspx.cs, no creo que sea relevante mostrar todo el demás código del cs, pero si lo necesitan lo pondré todo.

    protected void btnIngresar_Click(object sender, EventArgs e) {

    //aquí va el código con las llamadas a base de datos así que es necesario una llamada al servidor

    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Acceso", "Acceso();", true); }



    Espero que me puedan ayudar, sé que hay más formas de lograr lo que yo quiero de hecho lo tenía en panels en vez de divs, pero lo que más me interesa es usar jquery ya que apenas estoy aprendiendo a usarlo y me gustó mucho esa animación que hice, es algo sencilla pero aún soy principiante. Les agradecería si me pueden ayudar a que funcione el código.

    martes, 14 de enero de 2014 22:38

Respuestas

  • hola

    si haces

    function Acceso() {

    alert('ejecuto Acceso()'); $("#dLogin").slideUp(700); $("#dContenido").fadeIn("slow"); }

    puedes ver que el alert se visualiza ? digo para descartar que si ingresa a esa funcion

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta razielx4crazy miércoles, 15 de enero de 2014 5:38
    martes, 14 de enero de 2014 23:50

Todas las respuestas

  • hola

    si haces

    function Acceso() {

    alert('ejecuto Acceso()'); $("#dLogin").slideUp(700); $("#dContenido").fadeIn("slow"); }

    puedes ver que el alert se visualiza ? digo para descartar que si ingresa a esa funcion

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta razielx4crazy miércoles, 15 de enero de 2014 5:38
    martes, 14 de enero de 2014 23:50
  • Sí manda el alert pero no entiendo por qué no hace lo demás entonces... algo tiene que ver el postback¿?
    miércoles, 15 de enero de 2014 5:15
  • Listo! Lo que hice fue poner Update Panels en cada div que uso, muchas gracias por su atención y tiempo.
    miércoles, 15 de enero de 2014 5:38