jQuery UI的Dialog无法提交问题的解决方法

 更新时间:2011年01月11日 01:51:17   作者:  
最近在使用jQuery UI的Dialog控件时发现如果在此控件放置表单,则所有表单均无法正常提交
具体表现为:
1.提交按钮失效,点击后无任何反应。
2.即便是使用其它手段使页面产生提交,服务器端也无法取到Dialog中的表单数据。

原因:JQuery会把Dialog的元素append到Body里面,而不是form里面。研究了页面源码后发现,jQuery UI Dialog控件初始化时动态生成的HTML元素被添加到页面的尾部、form元素的后面,而原始的Dialog模板部分(其内包含表单元素)也被移到了 动态生成的HTML元素内。也就是说,原先在form内的表单在Dialog初始化后就被移到form外了,这就导致了Dialog模板内表单全部失效。

第1种方法:
不知jQuery UI的Dialog这样设计是一项功能还是一个bug。为了在Dialog内实现正常的页面提交,根据上述分析,我找到一个简单的解决办法——在 jQuery UI控件的“open”事件处理程序中将Dialog控件动态生成的HTML元素移到form元素内,代码如下:
使用代码:$("#dialog").parent().appendTo("/html/body/form[0]");
或者
$("#dlg").dialog({
open: function () {
$("body > div[role=dialog]").appendTo("form#aspnetForm");
}
});
代码中的“aspnetForm”是ASP.NET应用程序自动生成的当前页面form元素ID,使用时你可以换成自己页面的form ID。

第2种方法:
加入一个<div id="dialog_target"></div>这样的DIV,然后把Dialog写入这个DIV里面。
$("#dialog").parent().appendTo("#dialog_target");

第3种方法:
1、修改Dialog的JS代码,把代码添加到form中,而不是body里面
2、Dialog内部的自定义HTML不使用,而直接加入一个IFRAME,把里面的HTML移到另外的页面中,再与父页面进行交互就OK(我使用的就是这种方法,这样这些独立出来的代码还可以复用

第2种方法,服务器事件可以响应,效果也不错,可以优先考虑。

相关文章

  • jQuery实现简单飞机大战

    jQuery实现简单飞机大战

    这篇文章主要为大家详细介绍了jQuery实现简单飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 老司机带你解读jQuery插件开发流程

    老司机带你解读jQuery插件开发流程

    jQuery库中包括很多函数,所以开发插件的时候往往就需要注意命名空间和私有作用域等方面,下面就由Shawn Khameneh老司机带你解读jQuery插件开发流程及相关注意点.
    2016-05-05
  • jQuery实现仿Google首页拖动效果的方法

    jQuery实现仿Google首页拖动效果的方法

    这篇文章主要介绍了jQuery实现仿Google首页拖动效果的方法,涉及jQuery操作鼠标事件及div层的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • jQuery 表单验证扩展代码(二)

    jQuery 表单验证扩展代码(二)

    前些天写了一篇文章 jQuery 表单验证扩展(一) ,这是jQuery表单验证扩展的一个雏形,里面有了一些基本的功能!昨晚再次努力了一下,对表单中是否必填项验证这个部分做了一些修改的扩充!
    2010-10-10
  • jQuery操作input type=radio的实现代码

    jQuery操作input type=radio的实现代码

    jQuery操作input type=radio的实现代码,需要的朋友可以参考下
    2012-06-06
  • jQuery的Ajax接收java返回数据方法

    jQuery的Ajax接收java返回数据方法

    今天小编就为大家分享一篇jQuery的Ajax接收java返回数据方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • jQuery实现文本框输入同步的方法

    jQuery实现文本框输入同步的方法

    这篇文章主要介绍了jQuery实现文本框输入同步的方法,涉及jQuery元素属性操作的相关技巧,需要的朋友可以参考下
    2015-06-06
  • jQuery 和 CSS 的文本特效插件集锦

    jQuery 和 CSS 的文本特效插件集锦

    这篇文章主要汇总了20种jQuery 和 CSS 的文本特效插件,都是比较热门的特效插件,推荐给有需要的小伙伴。
    2014-12-12
  • jQuery利用FormData上传文件实现批量上传

    jQuery利用FormData上传文件实现批量上传

    这篇文章主要为大家详细介绍了jQuery利用FormData上传文件实现批量上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • jQuery实现聊天对话框

    jQuery实现聊天对话框

    这篇文章主要为大家详细介绍了jQuery实现聊天对话框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02

最新评论