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 写类方式之九
Jul 05 Javascript
JavaScript与Div对层定位和移动获得坐标的实现代码
Sep 08 Javascript
js静态方法与实例方法分析
Jul 04 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 Javascript
jQuery瀑布流插件Wookmark使用实例
Apr 02 Javascript
AngularJS自定义插件实现网站用户引导功能示例
Nov 07 Javascript
Javascript中的async awai的用法
May 17 Javascript
基于vue-ssr服务端渲染入门详解
Jan 08 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
一次Webpack配置文件的分离实战记录
Nov 30 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
Oct 31 Javascript
8个非常实用的Vue自定义指令
Dec 15 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
优化PHP代码的53条建议
2008/03/27 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
PHP发送短信代码分享
2015/08/11 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
js 处理URL实用技巧
2010/11/23 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
python中requests库session对象的妙用详解
2017/10/30 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
小学生安全责任书
2014/07/25 职场文书
2014年终个人工作总结
2014/11/07 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript