0

ログインコントロールをjQueryダイアログボックス内に表示するように設定しました。ただし、ダイアログボックス内ではログインボタンが機能しません。ダイアログボックスを削除すると正常に機能します。ユーザー名とパスワードには、JavaScriptの検証を行うフィールドバリデーターがいくつかあるため、競合が発生する可能性があると思いますが、理解できません。何か案は?

これが私のマークアップです:

<div id="loginBox">
<asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false">
    <LayoutTemplate>
        <span class="failureNotification">
            <asp:Literal ID="FailureText" runat="server"></asp:Literal>
        </span>

        <div class="accountInfo" style="float: left; width: 220px;">
            <fieldset class="login">
                    <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:</asp:Label>
                    <asp:TextBox ID="UserName" runat="server" CssClass="textEntry" Width="190"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
                        CssClass="red-text" ErrorMessage="User Name is required." ToolTip="User Name is required."
                        ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                    <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password" >Password:</asp:Label>
                    <asp:TextBox ID="Password" runat="server" CssClass="passwordEntry" TextMode="Password" Width="190"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
                        CssClass="red-text" ErrorMessage="Password is required." ToolTip="Password is required."
                        ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator><br/>
                    <asp:CheckBox ID="RememberMe" runat="server" style="display: inline-block;" />
                    <asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" style="display: inline-block; font-weight: normal;">Remember Me</asp:Label>
            </fieldset>

            <p class="submitButton">
                <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup" />
            </p>
        </div>
        <div style="float: left; width: 170px; padding-top: 15px;">
         <asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="red-text" ValidationGroup="LoginUserValidationGroup" />
        </div>
        <div class="clearfix"></div>
    </LayoutTemplate>
</asp:Login>
</div>

jQuery:

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

    // Dialog
    $('#loginBox').dialog({
        autoOpen: true,
        width: 420,
        modal: true,
        draggable: false,
        title: "<h2 style='margin-bottom: 0px;'>Log In</h2>",
        closeOnEscape: false,
        open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); },
        resizable: false,
        show: { effect: "fade", duration: 1500 }
    });
})
</script>

コードビハインドファイルには何もありません。ページがレンダリングされた後にログインボタンを調べると、次のようになっていることに気付きました。

<input type="submit" name="ctl00$mainbody$LoginUser$LoginButton" value="Log In" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$mainbody$LoginUser$LoginButton&quot;, &quot;&quot;, true, &quot;LoginUserValidationGroup&quot;, &quot;&quot;, false, false))" id="mainbody_LoginUser_LoginButton">

そのため、ダイアログボックスに表示されたときに何らかの理由でjavascriptが実行されていないと推測していますが、修正方法がわかりません。

4

2 に答える 2

3

たぶん、「ダイアログ」はページの「フォーム」タグの外側/下に配置されます。私が正しいFirebugまたは他のツールを使用して確認してください。その場合は、サーバー側のコントロールを再接続して、javascriptを介してフォームを作成します。

于 2011-08-10T16:03:23.533 に答える
0

jQueryUIダイアログボックスを使用しているときに見つけた追加情報を次に示します。役に立つかもしれません。 http://www.trentjones.net/2009/03/20/jqueryui-dialog-with-aspnet-empty-post-values/

于 2011-08-10T18:37:39.573 に答える