AJAX против JQuery Tooltip - панель обновления - PullRequest
1 голос
/ 14 сентября 2010

Я пытаюсь реализовать подсказку JQuery от flowplayer.org http://flowplayer.org/tools/demos/tooltip/form.html в мое веб-приложение (C # .NET).

У меня есть следующий скрипт на Master.Page:

           function createTooltip() {



            // select all desired input fields and attach tooltips to them
            $("#aspnetForm :input").tooltip({
                // place tooltip on the right edge
                position: ['center', 'right'],
                // a little tweaking of the position
                offset: [-2, 10],

                // use a simple show/hide effect
                effect: 'fade',

                // custom opacity setting
                opacity: 0.7
            });        
}

        //--add tooltips after every postback (including partial AJAX postbacks)

        function pageLoad(sender, args) {
            if (args.get_isPartialLoad()) {
                createTooltip();
            }
        }

Это будет контролировать этот ввод и еще несколько других:

<asp:TextBox ID="txtEscola" runat="server" Text="" class="tooltipHandle" title="Observações adicionais que sejam prudentes introduzir" MaxLength="100" </asp:TextBox>

У меня есть GridView и DetailsView в UpdatePanel, после первого частичногоPostBack всплывающая подсказка будет работать только с входными данными в этом UpdatePanel, а после следующих частичных PartPackBack ни один не будет работать вообще.

Если я изменюсь с:

        function pageLoad(sender, args) {
            if (args.get_isPartialLoad()) {
                createTooltip();
            }
        }

до:

        function pageLoad(sender, args) {
            createTooltip();
    }

Только вход за пределами UpdatePanel будет работать

Если я получу прямой доступ к вводу по его идентификатору и классу, он будет работать правильно, но это будет означать, что все они будут напечатаны:

$("#ctl00_ContentPlaceHolder1_DetailsView1_txtEscola.tooltipHandle").tooltip({

Есть мысли о том, как заставить их всех связываться правильно? заранее спасибо

Ответы [ 2 ]

2 голосов
/ 16 сентября 2010

Решил ее простым обходным путем, создал вторую функцию для создания всплывающей подсказки, которая воздействует только на поле ввода внутри панели подробностей / панели обновления:

        function createTooltipOutside() {
        $('.tooltipHandleOutside').tooltip({
            position: ['center', 'right'],
            offset: [-2, 10],
            effect: 'fade',
            opacity: 0.7
        });
    }
    function createTooltipInside() {
        //--call this to add tooltips to any element with a class of "tooltipHandleInside"
        $('.tooltipHandleInside').tooltip({
            position: ['center', 'right'],
            offset: [-2, 10],
            effect: 'fade',
            opacity: 0.7
        });

    }

    //--add tooltips after every postback (including partial AJAX postbacks)

    function pageLoad(sender, args) {
        if (args.get_isPartialLoad()) {
            createTooltipInside();
        }
        createTooltipOutside();
    }

Я до сих пор не понимаю, почему это не сработало раньше ...

0 голосов
/ 14 сентября 2010

Похоже, ваш JavaScript больше не привязан при обновлении панели обновления.

Вам нужно будет выполнить один из следующих фрагментов кода, когда ваша панель обновлений отправит назад, чтобы заново привязать JavaScript.

ClientScriptManager cs = Page.ClientScript;
cs.RegisterStartupScript(typeof(Page), "ReApplyJavascript", "<script type=text/JavaScript>createTooltip();</script>", false);

OR

ScriptManager.RegisterStartupScript(Page, typeof(Page), "ReApplyJavascript", "<script type=text/JavaScript>createTooltip();</script>", false);
...