2

問題のスナップショット![問題のスナップショット][2]次のコードで2つの更新パネルを使用するWebフォームがあります。

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <ContentTemplate>
                    <div id="SpeciesWrapper" class="RowControl" runat="server">
                        <div class="QuestionColumnControl">
                            <asp:Label ID="lblspecies" runat="server">[$BRAND(LABEL,STAGE1.SPECIES)$]</asp:Label>
                        </div>
                        <div class="AnswerColumnControl" title="Please let us know the type of pet you want to insure.">
                            <asp:RadioButtonList ID="radbtnspecies" runat="server" AutoPostBack="True" OnSelectedIndexChanged="speciesChanged"
                                RepeatDirection="Horizontal" >
                                <asp:ListItem Text="Cat" />
                                <asp:ListItem Text="Dog" />
                            </asp:RadioButtonList>
                            <label for="radbtnspecies" class="error">
                                Please select your gender</label>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Select your Species Type"
                                ControlToValidate="radbtnspecies" EnableClientScript="False"></asp:RequiredFieldValidator>


                        </div>
                    </div>
                    <div id="PetBreedWrapper" class="RowControl" runat="server">
                        <div class="QuestionColumnControl">
                            <asp:Label ID="lblPetBreed" runat="server" AssociatedControlID="ddlPetBreed">[$BRAND(LABEL,STAGE1.PETBREED)$]</asp:Label>
                        </div>
                        <div class="AnswerColumnControl">
                            <asp:DropDownList ID="ddlPetBreed" runat="server" ToolTip="If you can’t find the right breed, please call us as we may still be able to insure your pet." />
                            <span class="errormsg">
                                <cc1:BDML_HighlighterValidator ID="valPetBreed" runat="server" ControlToValidate="ddlPetBreed"
                                    DivID="PetBreedWrapper" DivCSS="RowControl" ErrorClass="RowControlErr" ForeColor=""
                                    ValidateEmptyText="True" ErrorMessage="[$BRAND(ERROR,STAGE1.PETBREED.REQ)$]"
                                    Display="Dynamic" OnServerValidate="required_ServerValidate" SetFocusOnError="true"> </cc1:BDML_HighlighterValidator>
                            </span>
                        </div>
                    </div>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="radbtnspecies" EventName="SelectedIndexChanged" />
                </Triggers>
            </asp:UpdatePanel>

更新パネルを使用するもう1つのフォームは次のとおりです。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <div id="ChippedWrapper" class="RowControl" runat="server">
                        <div class="QuestionColumnControl">
                            <asp:Label ID="lblChipped" runat="server" AssociatedControlID="radChippedYes">[$BRAND(LABEL,STAGE1.CHIPPED)$]</asp:Label>
                        </div>
                        <div class="AnswerColumnControl" title="Has your pet been identified with a chip or tag?">
                            <asp:RadioButton ID="radChippedYes" Checked="true" runat="server" GroupName="radChipped"
                                AutoPostBack="True" OnCheckedChanged="radChippedYes_CheckedChanged" />
                            <asp:Label ID="lblChippedYes" runat="server" AssociatedControlID="radChippedYes">[$BRAND(LABEL,STAGE1.CHIPPEDYES)$]</asp:Label>
                            <asp:RadioButton ID="radChippedNo" runat="server" GroupName="radChipped" AutoPostBack="True"
                                OnCheckedChanged="radChippedNo_CheckedChanged" />
                            <asp:Label ID="lblChippedNo" runat="server" AssociatedControlID="radChippedNo">[$BRAND(LABEL,STAGE1.CHIPPEDNO)$]</asp:Label>
                            <%--<img alt="Help" class="help" src="[$BRAND(IMAGELINK,HELP)$]" onmouseover="javascript:showhelpdiv('help-chipped')"
                                onmouseout="javascript:hidehelpdiv('help-chipped')" onmousemove="javascript:movehelpdiv(event,'help-chipped')" />--%>
                        </div>
                    </div>
                    <div id="ChipNoWrapper" class="RowControl" runat="server">
                        <div class="QuestionColumnControl">
                            <asp:Label ID="lblChipNo" runat="server" AssociatedControlID="txtChipNo">[$BRAND(LABEL,STAGE1.CHIPNO)$]</asp:Label>
                        </div>
                        <div class="AnswerColumnControl">
                            <asp:TextBox ID="txtChipNo" runat="server" MaxLength="15" />
                            <%--<img alt="Help" class="help" src="[$BRAND(IMAGELINK,HELP)$]" onmouseover="javascript:showhelpdiv('help-chipno')"
                                onmouseout="javascript:hidehelpdiv('help-chipno')" onmousemove="javascript:movehelpdiv(event,'help-chipno')" />--%>
                            <span class="errormsg">

                            </span>
                        </div>
                    </div>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="radChippedYes" EventName="CheckedChanged" />
                </Triggers>
            </asp:UpdatePanel>

外部スクリプトファイルを使用していて、ページで参照しています。フォームは、次のコードを使用してページの読み込み時にjqueryuiツールチップウィジェットを使用します。

if ($('body').prop('id') == "youandyourpet") {

$(function () {


    //code to initialize tooltip
    $(document).tooltip();
 });

function pageLoad(sender, args) {

        //code to initialize tooltip
        $(document).tooltip();      
}}

ここでは、jqueryready関数とpageLoad関数を使用しているため、更新パネルの部分的なレンダリングが行われると、コントロールがツールチップに再度関連付けられます。しかし、IE7,8と最新のクロムバージョンをチェックインしたところ、コントロールパネルにある上記のラジオボタンのいずれかが選択された場合でもツールチップが表示されたままになっています。

![フォームの問題を示す画像] [3]

4

5 に答える 5

6

私は多くのフォーラムでたくさん検索しました。また、私は正しくやっていますが、最終的に私は自分の問題を解決するための非常に汚い方法を持っています。

var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_endRequest(function () { $(".ui-tooltip-content").parents('div').remove(); });

誰かが知っているなら、他の解決策を提供してください。乾杯。

于 2012-10-25T15:23:33.483 に答える
3

私の意見で最も洗練された解決策は、次のコードを実行することです。$( "。ui-tooltip-content")。parents('div')。remove(); マスターページでOnLoad();

于 2013-10-10T13:52:30.400 に答える
0

asp.netajaxとjquerytogatherを一緒に使用している場合は、次のようにコードを更新することをお勧めします。

/*globals jQuery, window, Sys */
(function ($, Sys) {
function setupTooltip()
{
 $(document).tooltip();
}

$(document).ready(function () {
setupTooltip();
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () {
            setupTooltip();
        });
});
}(jQuery, window.Sys));

これにより、発生している問題が修正されます。

于 2012-10-25T10:20:08.570 に答える
0

私の解決策は次のとおりです。

$(document).ready(function () {
            $('.MyTooltip').tooltip(
            {
                tooltipClass: 'LDFGridCellTooltip',
                open: function (event, ui) {
                            setTimeout(function () {
                                $(ui.tooltip).hide();
                            }, 3000);
                        },
                items: '[data-title]',
                content: function (a) {
                    return $('<span>' + $(this).attr('data-title') + '</span>').html();
                }
            });
        });
于 2014-07-01T11:57:42.203 に答える
0

updatePanelsを使用していることを考慮して、pageLoad()関数にjquery-ui割り当てを入力し、document.ready()でこの関数を呼び出すことをお勧めします。この関数内で、@RealityDysfunctionが言及した関数を呼び出すことができます。したがって、構造は次のようになります。

$(document).ready(function () {
    //some stuff that you may have
    pageLoad();        
});


function pageLoad() {
    $(document).tooltip({
        show: {
            effect: "fadeIn",
            duration: 300
        },
        hide: {
            effect: "fadeOut",
            duration: 100
        },
        tooltipClass: "toolTipClass"
    });
    $(".ui-tooltip-content").parents('div').remove();
 };

このようにして、トリガーされるすべてのポストバックで、jquery-uiウィジェットの割り当てが失われることはなく、常にツールチップが削除されます。オプションで、これを.jsファイルに挿入し、ドキュメントの最後にロードすることができます。

于 2016-01-12T10:30:39.960 に答える