1

jqueryモーダルポップアップで表示しているdivがあります。その中にテキストボックスとボタンがあります。そのボタンをクリックすると、コードビハインドサイドでリクエストを送信します。これで、テキストボックスの値を取得しようとすると、毎回「」になります。以下は私のhtmlです。

<div id="divDelete" runat="server" style="display: none;">
        <div>
            <div>
                <h2>
                    Are you sure you want to delete your wishisdone account?</h2>
                <p>
                    Is there anything that can make you reconsider? Contact our support, if you have
                    any problems and we will help you.</p>
                <p>
                    If you wish to continue, and delete your account, be aware that we will only keep
                    your files for 30 days and then they will be permanently deleted. You can reactivate
                    your account at any time within 30 days by logging back in.
                </p>
                <p>
                    Please, let us know the reason for your decision, so we can make our services more
                    convenient to use.</p>
                <br />
                <label class="blackLabel">
                    Password&nbsp;<span class="mandatory">*</span></label>
                <p>
                    <asp:TextBox ID="txtPassword" CssClass="greyInputLarge" runat="server"></asp:TextBox>
                    <br clear="all" />
                    <span class="error" id="spPassword" runat="server"></span>
                </p>
                <label class="blackLabel">
                    Why are you leaving?&nbsp;</label>
                <p>
                    <asp:DropDownList ID="drpReasonOfDelete" CssClass="greySelectLarge" runat="server">
                        <asp:ListItem Text="I have another WishIsDone account" Value="1"></asp:ListItem>
                        <asp:ListItem Text="I haven't registered this account" Value="2"></asp:ListItem>
                        <asp:ListItem Text="No need in service anymore" Value="3"></asp:ListItem>
                        <asp:ListItem Text="Technical problems" Value="4"></asp:ListItem>
                        <asp:ListItem Text="WishIsDone is too slow for me" Value="5"></asp:ListItem>
                        <asp:ListItem Text="Some features do not work" Value="6"></asp:ListItem>
                        <asp:ListItem Text="I don't understand how to use WishIsDone" Value="7"></asp:ListItem>
                        <asp:ListItem Text="Other" Value="8"></asp:ListItem>
                    </asp:DropDownList>
                </p>
                <label class="blackLabel">
                    Please, explain further&nbsp;</label>
                <p>
                    <asp:TextBox ID="txtReason" CssClass="greyInputLargeForMultiline" runat="server"
                        TextMode="MultiLine"></asp:TextBox>
                </p>
                <asp:HiddenField ID="hdfPassword" runat="server" />
                <br clear="all" />
            </div>
        </div>
    </div>

そして私のjqueryファイルは

$(document).ready(function () {
var $Error1 = $('[id$=divDelete]').dialog({
    autoOpen: false,
    resizable: false,
    modal: true,
    height: 'auto',
    width: 580,
    title: "Deactivate Account",
    buttons: {
        "Close": function () {
            $Error1.dialog('close');
        },
        "Delete my account": function () {
            if ($('[id$=txtPassword]').val() == '') {
                $('[id$=txtPassword]').css('border', '1px solid red');
                $('[id$=spPassword]').text("You can't leave this empty.");
                return false;
            } else {
                var password = $('[id$=txtPassword]').val();

                $('[id$=hdfPassword]').val(password);
                alert($('[id$=hdfPassword]').val());
                $('[id$=Button1]').click();
            }
        }
    },
    close: function (event, ui) {
    },
    open: function () {
    }
});

$('[id$=btnOpenPopUp]').live('click', function (e) {
    e.preventDefault();
    openPopUp();
});

function openPopUp() {
    $Error1.dialog('open');
}

var querystring = GetQueryStringParams('delete');
if (querystring == '1') {
    openPopUp();
}
});
function GetQueryStringParams(sParam) {
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
    var sParameterName = sURLVariables[i].split('=');
    if (sParameterName[0] == sParam) {
        return sParameterName[1];
    }
}

}

コードの背後にあるコードは

protected void Button1_Click(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(Request.QueryString["delete"]) && !string.IsNullOrEmpty(Request.QueryString["u"]))
    {
        try
        {
            Guid userId = new Guid(Convert.ToString(Request.QueryString["u"].ToString()));
            objUsers.Id = userId;
            objUsers.Status = "T";
            objUsers.ModifiedOn = DateTime.UtcNow;
            string password = txtPassword.Text;
            string newass = hdfPassword.Value;
                       }
        catch
        {
            Response.Write("There is some error while deleting the account.");
        }

    }
}

alert()で取得しようとすると、テキストボックスに入力された値が返されます。しかし、その背後にあるコードには「」があります。なぜそれが起こっているのか完全に混乱していますか?助けてください。

4

1 に答える 1

4

頭のてっぺんから、これはjQuery UI Dialogを使用するときに、実際にの内容を取得して、これをのに<div>追加するためだと思います。bodyhtml

その結果、<input>タグはタグの外側になりました<form>

そのためPostBack、コントロールはリクエストのコンテンツ内に実際には投稿されません。

ここに問題のいくつかの解決策があります。

Jquery UIダイアログ内の入力が送信されていませんか?

ASP.NETボタンポストバックを使用したjQueryUIダイアログ

于 2012-10-03T11:01:31.237 に答える