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


Posted in Javascript onJanuary 11, 2011

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

Javascript 相关文章推荐
jquery ajax请求实例深入解析
Nov 26 Javascript
jQuery常见开发技巧详细整理
Jan 02 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
Sep 25 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
Mar 25 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
Oct 29 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
Mar 25 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
Jul 12 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 Javascript
微信小程序关键字变色实现代码实例
Dec 13 Javascript
js实现文章目录索引导航(table of content)
May 10 Javascript
js实现盒子移动动画效果
Aug 09 Javascript
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 Vue.js
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
Jan 11 #Javascript
Jquery中获取iframe的代码
Jan 11 #Javascript
基于jQuery的message插件实现右下角弹出消息框
Jan 11 #Javascript
基于jquery的cookie的用法
Jan 10 #Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
Jan 09 #Javascript
IE6中使用position导致页面变形的解决方案(js代码)
Jan 09 #Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
Jan 09 #Javascript
You might like
PHP上传文件参考配置大文件上传
2015/12/16 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
python 判断是否为正小数和正整数的实例
2017/07/23 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
使用Python在Windows下获取USB PID&amp;VID的方法
2019/07/02 Python
python对一个数向上取整的实例方法
2020/06/18 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
python中os.remove()用法及注意事项
2021/01/31 Python
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
班级道德讲堂实施方案
2014/02/24 职场文书
公务员处分决定书
2015/06/25 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
vue3中的组件间通信
2021/03/31 Vue.js