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实现的网页局布刷新效果
Dec 01 Javascript
js下用层来实现select的title提示属性
Feb 23 Javascript
两个JavaScript jsFiddle JSBin在线调试器
Mar 14 Javascript
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
Sep 21 Javascript
深入探寻seajs的模块化与加载方式
Apr 14 Javascript
jQuery实现简单滚动动画效果
Apr 07 Javascript
jQuery Validate 校验多个相同name的方法
May 18 jQuery
详解vue2.0 不同屏幕适配及px与rem转换问题
Feb 23 Javascript
js+canvas实现验证码功能
Sep 21 Javascript
怎样在vue项目下添加ESLint的方法
May 16 Javascript
AngularJs中$cookies简单用法分析
May 30 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
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
php长字符串定义方法
2012/07/12 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
python读写ini文件示例(python读写文件)
2014/03/25 Python
讲解Python中if语句的嵌套用法
2015/05/14 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
大学新生军训个人的自我评价
2013/10/03 职场文书
冰淇淋店的创业计划书
2014/02/07 职场文书
师范生自我鉴定
2014/03/20 职场文书
客房服务员岗位职责
2015/02/09 职场文书
学生个人总结范文
2015/02/15 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
生活小常识广播稿
2015/08/19 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP
Redis入门基础常用操作命令整理
2022/06/01 Redis