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插件开发全解析
Oct 10 Javascript
JS弹出层单纯的绝对定位居中示例代码
Feb 18 Javascript
基于jQuery实现select下拉选择可输入附源码下载
Feb 03 Javascript
Bootstrap组件(一)之菜单
May 11 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
Jul 08 Javascript
js+div+css下拉导航菜单完整代码分享
Dec 28 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
Jan 10 Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
Nov 09 jQuery
JavaScript canvas实现围绕旋转动画
Nov 18 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
Aug 07 Javascript
electron实现qq快捷登录的方法示例
Oct 22 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常用Output和ptions/Info函数集介绍
2013/06/19 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
ie focus bug 解决方法
2009/09/03 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
nodejs集成sqlite使用示例
2017/06/05 NodeJs
vue 组件使用中的一些细节点
2018/04/25 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
python检测远程服务器tcp端口的方法
2015/03/14 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
留学生如何写好自荐信
2013/12/27 职场文书
办公室岗位职责
2014/02/12 职场文书
中秋寄语大全
2014/04/11 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
2014年保管员工作总结
2014/11/18 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
Android Rxjava3 使用场景详解
2022/04/07 Java/Android
python中urllib包的网络请求教程
2022/04/19 Python