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 相关文章推荐
js DOM模型操作
Dec 28 Javascript
JavaScript Serializer序列化时间处理示例
Jul 31 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
AngularJS实现单独作用域内的数据操作
Sep 05 Javascript
关于不同页面之间实现参数传递的几种方式讨论
Feb 13 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
Feb 12 jQuery
浅谈vuepress 踩坑记
Apr 18 Javascript
详解如何在vue-cli中使用vuex
Aug 07 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
May 29 Javascript
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
JavaScript原始值与包装对象的详细介绍
May 11 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
php创建sprite
2014/02/11 PHP
Smarty保留变量用法分析
2016/05/23 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
JavaScript:Date类型全面解析
2016/05/19 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
Python中的is和id用法分析
2015/01/26 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
信息专业学生学习的自我评价
2014/02/17 职场文书
售后求职信范文
2014/03/15 职场文书
工作鉴定评语
2014/05/04 职场文书
未婚证明书模板
2014/10/08 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
上课说话检讨书
2015/01/27 职场文书
地道战观后感300字
2015/06/04 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
Mysql开启外网访问
2022/05/15 MySQL