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种方法,服务器事件可以响应,效果也不错,可以优先考虑。

相关文章

  • 精心挑选的15个jQuery下拉菜单制作教程

    精心挑选的15个jQuery下拉菜单制作教程

    下拉菜单是网站导航常用的表现形式之一,能够呈现更多的导航内容。如果网站能够设计出有吸引力的网站导航,将会吸引更多的用户去浏览网站的内容
    2012-06-06
  • 利用jquery包将字符串生成二维码图片

    利用jquery包将字符串生成二维码图片

    将一个字符串生成二维码图片,如果想要带log的二维码,可以在生成后的二维码中间部位自己添加一个小log,具体实现如下,感兴趣的朋友可以参考下
    2013-09-09
  • jquery each()源代码

    jquery each()源代码

    jquery文档说 each(callback)作用是以每一个匹配的元素作为上下文来执行一个函数。就是用each来遍历数组,来执行同一个方法
    2011-02-02
  • Jquery知识点二 jquery下对数组的操作

    Jquery知识点二 jquery下对数组的操作

    众所周知,Jquery是对JavaScript的一种高效的封装,所以Jquery要操作的数组即是JavaScript中的数组,在JavaScript中我们使用for以及for-in进行数组的操作,而在Jquery中则使用$.map()、$.each()来操作数组
    2011-01-01
  • innerHTML与jquery里的html()区别介绍

    innerHTML与jquery里的html()区别介绍

    我原本一直以为innerHTML和jquery里的html其实是完全一样的,jquery是多此一举了,直到我遇到一次问题
    2012-10-10
  • jQuery+jsp下拉框联动获取本地数据的方法(附源码)

    jQuery+jsp下拉框联动获取本地数据的方法(附源码)

    这篇文章主要介绍了jQuery+jsp下拉框联动获取本地数据的方法,以实例形式较为详细的分析了jQuery结合jsp实现下拉联动菜单读取本地数据的相关技巧,并附带了完整源码供读者下载参考,需要的朋友可以参考下
    2015-12-12
  • jQuery中getJSON跨域原理的深入讲解

    jQuery中getJSON跨域原理的深入讲解

    这篇文章主要给大家介绍了关于jQuery中getJSON跨域原理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 用jQuery技术实现Tab页界面之二

    用jQuery技术实现Tab页界面之二

    这个tab页是把数据全部取回来再显示,所以没有数据缓存的特点。但是因为数据全部是显示的html代码,所以对搜索引擎是友好的,也许对seo有好处。
    2009-09-09
  • jQuery视差滚动效果网页实现方法经验总结

    jQuery视差滚动效果网页实现方法经验总结

    这篇文章主要介绍了jQuery视差滚动效果网页实现方法,结合实例形式总结分析了jQuery滚动效果的实现步骤、操作技巧及相关注意事项,需要的朋友可以参考下
    2016-09-09
  • jquery+css3打造一款ajax分页插件(自写)

    jquery+css3打造一款ajax分页插件(自写)

    这篇文章主要介绍了自己写的一款ajax分页插件,用jquery+css3打造支持IE6+,但没有动画效果,需要的朋友可以参考下
    2014-06-06

最新评论