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 相关文章推荐
由浅到深了解JavaScript类
Sep 08 Javascript
IE8 chrome中table隔行换色解决办法
Jul 09 Javascript
js判断变量是否未定义的代码
Mar 28 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
Jul 22 Javascript
详解JS-- 浮点数运算处理
Nov 28 Javascript
原生JS实现图片轮播切换效果
Dec 15 Javascript
使用vue构建移动应用实战代码
Aug 02 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 13 Javascript
基于js中的存储键值对以及注意事项介绍
Mar 30 Javascript
详解Vue用cmd创建项目
Feb 12 Javascript
利用JavaScript将Excel转换为JSON示例代码
Jun 14 Javascript
React传值 组件传值 之间的关系详解
Aug 26 Javascript
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
windows下开发并编译PHP扩展的方法
2011/03/18 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
smarty简单应用实例
2015/11/03 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
Python字典操作简明总结
2015/04/13 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
TensorFlow Session会话控制&amp;Variable变量详解
2018/07/30 Python
Django单元测试工具test client使用详解
2019/08/02 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
什么是Remote Module
2016/06/10 面试题
对照四风自我剖析材料
2014/10/07 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
先进党员事迹材料
2014/12/24 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
详解php中流行的rpc框架
2021/05/29 PHP