在给出包含
的asp.net页面时,我遇到了以下内容<div id='test'>
<input type='checkbox' id='ch1' name='ch1' runat=server />
<input type="button" id="view_test" />
</div>
和以下jquery代码在对话框中显示此div
$("#view_test").click(function() {
$("#test").dialog({ show: 'slide', width: 600, title: 'View Check' });
});
如果单击了view_test按钮,则在表单发布之前初始化对话框时,.Net中的复选框ch1.Checked属性始终为False。但是,如果您只是在没有初始化对话框的情况下进行回发,它将按预期工
这是最奇怪的事情......
答案 0 :(得分:3)
jquery对话框在创建时在dom中移动。创建对话框后,尝试将其移回到表单标记中:
$("#test").parent().appendTo($("form:first"));
编辑 - 这是更完整的代码:
<script type="text/javascript">
$(function() {
$("#view_test").click(function() {
$("#test").dialog({ show: 'slide', width: 600, title: 'View Check' });
$("#test").parent().appendTo($("form:first"));
});
});
</script>
<body>
<form id="form1" runat="server">
<div>
<div id="test">
<input type="checkbox" id="ch1" name="ch1" runat="server" />test
<input type="button" id="view_test" value="click" />
</div>
<asp:Button ID="btnSubmit" runat="server" Text="submit"
onclick="btnSubmit_Click" />
</div>
</form>
</body>
代码背后:
public partial class Tests_Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
Response.Write(ch1.Checked.ToString());
}
}
答案 1 :(得分:1)
我不知道JQuery对话框插件,但我经常遇到这个问题,直到现在我看到的每个Lightbox / Thickboxclone。之一:
该脚本将将 DOM元素复制到Lightbox区域,而不是移动它们。
该脚本将将 DOM元素移动到Lightbox区域,但不会将它们移回原始位置,将放在表单之外。
我打赌后者发生了。
可能的解决方法:
将表单放入对话框窗口(如果可能)
修改对话框脚本,使其在移动的DOM对象中存储对父元素的引用,并在对话框关闭时将它们移回正确的位置。
或者使用fehays建议的非常简单的解决方案。