教程集 www.jiaochengji.com
教程集 >  jQuery  >  jquery 教程  >  正文 jQuery UI Dialog控件中的表单无法正常提交的解决方法

jQuery UI Dialog控件中的表单无法正常提交的解决方法

发布时间:2013-07-21   编辑:jiaochengji.com
研究了页面源码后发现,jQuery UI Dialog控件初始化时动态生成的HTML元素被添加到页面的尾部、form元素的后面,而原始的Dialog模板部分(其内包含表单元素)也被移到了 动态生成的HTML元素内。
研究了页面源码后发现,jquery ui Dialog控件初始化时动态生成的HTML元素被添加到页面的尾部、form元素的后面,而原始的Dialog模板部分(其内包含表单元素)也被移到了 动态生成的HTML元素内。 最近使用jquery UI的Dialog控件时发现如果在此控件放置表单,则所有表单均无法正常提交,具体表现为:
1.提交按钮失效,点击后无任何反应。

2.即便是使用其它手段使页面产生提交,服务器端也无法取到Dialog中的表单数据。

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

不知jQuery UI的Dialog这样设计是一项功能还是一个bug。为了在Dialog内实现正常的页面提交,根据上述分析,我找到一个简单的解决办法——在jQuery UI控件的“open”事件处理程序中将Dialog控件动态生成的HTML元素移到form元素内,代码如下:
复制代码 代码如下:

$("#dlg").dialog({
open: function () {
$("body > div[role=dialog]").appendTo("form#aspnetForm");
}
});

代码中的“aspnetForm”是ASP.NET应用程序自动生成的当前页面form元素ID,使用时你可以换成自己页面的form ID。

您可能感兴趣的文章:
jQuery UI Dialog控件中的表单无法正常提交的解决方法
jQuery UI的Dialog无法提交问题的解决方法
jQuery UI 教程之二 ——jquery ui dialog的使用
jquery dialog open后,服务器端控件失效的快速解决方法
jQuery UI Dialog 创建友好的弹出对话框实现代码
jquery ui dialog里调用datepicker的问题
jQuery UI 教程之一 ——入门
在JQuery dialog里的服务器控件 事件失效问题
html5 dialog使用详解
Jquery easyui中Form表单提交注意事项

[关闭]
~ ~