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 相关文章推荐
Node.js生成HttpStatusCode辅助类发布到npm
Apr 09 Javascript
Jquery chosen动态设置值实例介绍
Aug 08 Javascript
javascript弹出层输入框(示例代码)
Dec 11 Javascript
json字符串之间的相互转换示例代码
Aug 21 Javascript
JavaScript的各种常见函数定义方法
Sep 16 Javascript
AngularJS基础知识
Dec 21 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
Apr 06 Javascript
jQuery实现可展开折叠的导航效果示例
Sep 12 Javascript
angular和BootStrap3实现购物车功能
Jan 25 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
Dec 10 Javascript
重学JS 系列:聊聊继承(推荐)
Apr 11 Javascript
JavaScript定时器常见用法实例分析
Nov 15 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
文件上传的实现
2006/10/09 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
python简单程序读取串口信息的方法
2015/03/13 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
python适合人工智能的理由和优势
2019/06/28 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
html5时钟实现代码
2010/10/22 HTML / CSS
美国最佳选择产品网站:Best Choice Products
2019/05/27 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
安全生产责任书范本
2014/04/15 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
同意离婚答辩状
2015/05/22 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server