none
Jquery Asp.Net RRS feed

  • Pergunta

  • Uso VS2010, aspnet4, jQuery

    Na minha página aspx, tenho o código abaixo que chama uma janela (jquery) dialog, com uma páginas aspx dentro, funciona ok! Porém quando clico uma segunda vez não abre mais a janela, funciona apenas no primeiro clique, isso se se eu não clicar em outro componente antes, caso eu clique não abre mais.

    _______

    $(document).ready(function() {
    $("#<%=btnNovoFuncionario.ClientID%>").click(function()
                {
                    var page = "../Funcionario /NovoFuncionario .aspx";
                    var dialogo = $('<div></div>').html('<iframe style="border: 0px; " src="' + page + '" width="100%" height="100%"></iframe>').dialog({
                        autoOpen: false,
                        modal: true,
                        height: 680,
                        width: 810,
                        title: "Novo Funcionario "
                    });
                    dialogo.dialog('open');
                });

    }


    Álvaro Luiz


    • Editado Álvaro Luiz quinta-feira, 9 de abril de 2015 18:30
    quinta-feira, 9 de abril de 2015 18:29

Respostas

  • Ve se assim funciona:

    function pageLoad() {
    	jQuery(function ($) {
    		$("input[id$=btnNovoFuncionario]").click(function() {
                    	var page = "../Funcionario /NovoFuncionario.aspx";
                    	var dialogo = $('<div></div>').html('<iframe style="border: 0px; " src="' + page + '" width="100%" height="100%"></iframe>').dialog({
                        		autoOpen: false,
                        		modal: true,
                        		height: 680,
                        		width: 810,
                        		title: "Novo Funcionario"
                    	});
                    	dialogo.dialog('open');
    		);
    	});
    }

    • Marcado como Resposta Álvaro Luiz quinta-feira, 9 de abril de 2015 19:39
    quinta-feira, 9 de abril de 2015 19:08
  • Álvaro, segue um exemplo que fiz e testei aqui:

    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <link href="Content/themes/base/all.css" rel="stylesheet" />
        <script src="Scripts/jquery-1.6.4.js"></script>
        <script src="Scripts/jquery-ui-1.11.4.js"></script>
        <script>
            function pageLoad() {
                jQuery(function ($) {
                    $("input[id$=btnNovoFuncionario]").click(function () {
                        var page = "../Funcionario /NovoFuncionario.aspx";
                        var dialogo = $('<div></div>').html('<iframe style="border: 0px; " src="' + page + '" width="100%" height="100%"></iframe>').dialog({
                            autoOpen: false,
                            modal: true,
                            height: 680,
                            width: 810,
                            title: "Novo Funcionario"
                        });
                        dialogo.dialog('open');
                    });
                });
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:ScriptManager ID="smr1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="pnl1" runat="server">
                <ContentTemplate>
                    <asp:Button ID="btnNovoFuncionario" runat="server" />
                </ContentTemplate>
            </asp:UpdatePanel>
        </form>
    </body>
    </html>

    • Marcado como Resposta Álvaro Luiz quinta-feira, 9 de abril de 2015 19:39
    quinta-feira, 9 de abril de 2015 19:14

Todas as Respostas

  • Você utiliza scriptmanager e updatepanel?
    quinta-feira, 9 de abril de 2015 18:32
  • Isso mesmo amigo, uso os dois

    Álvaro Luiz

    quinta-feira, 9 de abril de 2015 18:37
  • Tenta isso com o comando On, tem que ser jquery 1.7 ou superior

    $("#<%=btnNovoFuncionario.ClientID%>").on('click',function(){

    //Codigo

    });

    quinta-feira, 9 de abril de 2015 18:39
  • funciona assim: se ao abrir a página, eu clicar e fechar ele várias vezes, funciona, mas se eu clicar em outro botão e em seguida tentar abrir novamente não abre

    Álvaro Luiz

    quinta-feira, 9 de abril de 2015 18:47
  • Quando uso esses dois, ao inves de usar o

    $(document).ready(function() { });

     eu uso:

    function pageLoad() {
        jQuery(function ($) {

        });
    }

    depois que passei a usar assim, parei de ter problemas em relação ao postback.

    quinta-feira, 9 de abril de 2015 18:49
  • Testei só com o

    function pageLoad() {
        jQuery(function ($) {

        });
    }

    ... E não funcionou, nem abriu nenhuma uma vez


    Álvaro Luiz

    quinta-feira, 9 de abril de 2015 18:53
  • Ve se assim funciona:

    function pageLoad() {
    	jQuery(function ($) {
    		$("input[id$=btnNovoFuncionario]").click(function() {
                    	var page = "../Funcionario /NovoFuncionario.aspx";
                    	var dialogo = $('<div></div>').html('<iframe style="border: 0px; " src="' + page + '" width="100%" height="100%"></iframe>').dialog({
                        		autoOpen: false,
                        		modal: true,
                        		height: 680,
                        		width: 810,
                        		title: "Novo Funcionario"
                    	});
                    	dialogo.dialog('open');
    		);
    	});
    }

    • Marcado como Resposta Álvaro Luiz quinta-feira, 9 de abril de 2015 19:39
    quinta-feira, 9 de abril de 2015 19:08
  • Essa "function pageLoad()"

    é chamado no btnNovoFuncionario ?

    Álvaro Luiz

    quinta-feira, 9 de abril de 2015 19:14
  • Álvaro, segue um exemplo que fiz e testei aqui:

    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <link href="Content/themes/base/all.css" rel="stylesheet" />
        <script src="Scripts/jquery-1.6.4.js"></script>
        <script src="Scripts/jquery-ui-1.11.4.js"></script>
        <script>
            function pageLoad() {
                jQuery(function ($) {
                    $("input[id$=btnNovoFuncionario]").click(function () {
                        var page = "../Funcionario /NovoFuncionario.aspx";
                        var dialogo = $('<div></div>').html('<iframe style="border: 0px; " src="' + page + '" width="100%" height="100%"></iframe>').dialog({
                            autoOpen: false,
                            modal: true,
                            height: 680,
                            width: 810,
                            title: "Novo Funcionario"
                        });
                        dialogo.dialog('open');
                    });
                });
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:ScriptManager ID="smr1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="pnl1" runat="server">
                <ContentTemplate>
                    <asp:Button ID="btnNovoFuncionario" runat="server" />
                </ContentTemplate>
            </asp:UpdatePanel>
        </form>
    </body>
    </html>

    • Marcado como Resposta Álvaro Luiz quinta-feira, 9 de abril de 2015 19:39
    quinta-feira, 9 de abril de 2015 19:14
  • Coloquei um ponto de interrupção na linha:

     $("input[id$=btnNovoFuncionario]").click(function () {

    Mas nem entrou! Muito estranho


    Álvaro Luiz

    quinta-feira, 9 de abril de 2015 19:22
  • Fiz assim e está abrindo, varias vezes (adicionei as linhas em negrito) mas se algum componente causar um postback na página não abre mais.

    $(document).ready(function()
            {

                $("input[id$=btnNovoFuncionario]").click(function(e)
                {
                    var page = "../Funcionario/NovoFuncionario.aspx";
                    var dialogo = $('<div></div>').html('<iframe style="border: 0px; " src="' + page + '" width="100%" height="100%"></iframe>').dialog({
                        autoOpen: false,
                        modal: true,
                        height: 680,
                        width: 810,
                        title: "Novo Funcionario"
                    });
                    dialogo.dialog('open');
                    e.preventDefault();
                });


    Álvaro Luiz


    • Editado Álvaro Luiz quinta-feira, 9 de abril de 2015 19:29
    quinta-feira, 9 de abril de 2015 19:26
  • Se você puder, poste seu código da página. O exemplo que enviei funcionou aqui. e também, sempre uso o function pageLoad nos meus projetos com updatepanel.
    quinta-feira, 9 de abril de 2015 19:31
  • Alexandre, funcionou, como meu código era grande mais abaixo tinha um pageLoad,  e eu não percebi e estava colocando um acima, mas quando fiz como voce sugeriu deu certo, agora tá funcionando blz.

    Obrigado meu amigo



    Álvaro Luiz

    quinta-feira, 9 de abril de 2015 19:39
  • Álvaro, já bati muita cabeça com jqueryui e asp.net. Por conta do postback, tem alguns "macetes" que fazem toda a diferença. quando precisar, é só entrar em contato.
    Hoje estou trabalhando com bootstrap. No início é a mesma dor de cabeça, porém, quando se acostuma, tudo é uma maravilha.

    quinta-feira, 9 de abril de 2015 23:17