jquery对话框干扰.net输入复选框选中属性 - 始终为false

时间:2010-01-15 19:29:05

标签: .net asp.net jquery jquery-dialog

在给出包含

的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。但是,如果您只是在没有初始化对话框的情况下进行回发,它将按预期工

这是最奇怪的事情......

2 个答案:

答案 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建议的非常简单的解决方案。