我有一个显示在jQuery颜色框中的表单。提交表单时,该表单中的字段不会回发到页面。我修改了javascript,将表单字段存储到提交的隐藏字段中,并将那些DO发回。问题是,因为这是一个登录框,我真的不想像这样移动密码。主表单内容位于更新面板中。这是我的母版页的代码:
<form id="myform" runat="server" clientidmode="Static" method="post">
<asp:ScriptManager ID="ecommerceManager" runat="server" ClientIDMode="Static" EnableViewState="False" EnablePageMethods="True">
<Scripts>
<asp:ScriptReference Path="~/js/jquery-1.6.1.min.js" />
<asp:ScriptReference Path="~/js/jquery.colorbox.min.js" />
<asp:ScriptReference Path="~/js/eCommerce.js" />
</Scripts>
</asp:ScriptManager>
<div style="width: 940px; margin-left: auto; margin-right: auto;">
<div align="left">
TOP OF THE PAGE
<asp:ContentPlaceHolder ID="bodyContent" runat="server" ClientIDMode="Static">
</asp:ContentPlaceHolder>
BOTTOM OF THE PAGE
</div>
</div>
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(closeLoading);
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(loadData);
</script>
</form>
以下是我的主要默认页面中使用母版页的一些代码:
<asp:Content ID="mainContent" ContentPlaceHolderID="bodyContent" runat="server">
<asp:UpdatePanel ID="ecommerceUpdate" runat="server" ClientIDMode="Static">
<ContentTemplate>
<asp:Panel ID="pnlEcomMain" runat="server" CssClass="ecom_main" ClientIDMode="Static">
<asp:HiddenField ID="statusField" runat="server" ClientIDMode="Static" ViewStateMode="Disabled" EnableViewState="False" />
<asp:HiddenField ID="hdnUsername" runat="server" ClientIDMode="Static" ViewStateMode="Disabled" EnableViewState="False" />
<div class="add_product">
<div class="add_product_menu text_12_bold">
<asp:Image ID="imgAddProducts" ImageUrl="~/images/ecom_icon_add_2.gif" CssClass="std_btn" AlternateText="Add Products" runat="server" ClientIDMode="Static" />Add Additional Products:<br /><br />
<asp:DropDownList ID="newproduct" runat="server" ClientIDMode="Static"
onchange="addProduct()">
</asp:DropDownList>
</div>
</div>
</asp:Panel>
<div class="clear"></div>
<!--- HERE IS THE COLORBOX POPUP CONTENT --->
<div style="display: none; visibility: hidden;">
<div id="inline_login">
<p><strong>User Login Details Go Here</strong></p>
User Name: <asp:TextBox ID="loginName" runat="server" ClientIDMode="Static" EnableViewState="False" ViewStateMode="Disabled" /><br />
Password: <asp:TextBox ID="loginPassword" runat="server" TextMode="Password" ClientIDMode="Static" /><br />
<input type="button" name="loginBtn" id="loginbtn" value="Login" onclick="javascript:validateLogin()" />
</div>
</div>
</asp:Panel>
<asp:Label ID="xmlContent" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
新产品字段正确发布,但用户名和密码不会在发布之前将其复制到隐藏字段。我猜也许这与更新面板有冲突?我最初试图在更新面板中使用登录控件,但在论坛中读到已知问题。
对此的任何见解都将非常值得赞赏。我正在使用firebug并且可以确认这些字段不在帖子中,这就是为什么ASP没有找到它们。
答案 0 :(得分:4)
显然,尽管存在于表单内部,但颜色框实际上将内容移动到表单之外。我能够通过将这行代码添加到我的JavaScript提交函数来解决这个问题:
jQuery('#inline_login').appendTo('form');
希望它可以帮助别人!
答案 1 :(得分:1)
我从未使用过jQuery colorbox,但是我遇到了类似jQuery UI模式弹出窗口的问题。它正在做的是,当我附加弹出窗口时,它将内容div移到asp.net表单之外,因此控件没有被回发。
答案 2 :(得分:1)
在特定的.NET CMS(DNN)中为我工作的另一个选项是获取Jack的修复并附加到cbox_complete事件。发布以防其他人可能认为这有用。
$(document).bind('cbox_complete', function () {
$("#colorbox, #cboxOverlay").appendTo('form:first');
});
答案 3 :(得分:0)
与colorbox&amp;有类似的问题形式,这样解决了。我的问题是提交无效,因为字段集被剥离了表单标记;因此,如果您的表单未在彩盒中发布,请尝试此操作,将表单ID作为颜色框内容的href发送
$(document).ready(function () {
$('#login-trigger').click(function () {
$.colorbox({
inline: true,
href: "#login-form",
close: "×",
onOpen: function () { $('#login-content').css({ display: 'block' }); },
onClosed: function () { $('#login-content').css({ display: 'none' }); }
});
return false;
});