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 新浪网易的评论块制作
Jul 01 Javascript
Ext 今日学习总结
Sep 19 Javascript
DOM 中的事件处理介绍
Jan 18 Javascript
JQuery在页面中添加和除移DOM示例代码
Jun 24 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
Dec 20 Javascript
JS数组的赋值介绍
Mar 10 Javascript
JavaScript 深层克隆对象详解及实例
Nov 03 Javascript
Angular.js中控制器之间的传值详解
Apr 24 Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
JS实现动态生成html table表格的方法分析
Jul 11 Javascript
原生javascript实现连连看游戏
Jan 03 Javascript
JS控制GIF图片的停止与显示
Oct 24 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 无限级缓存的类的扩展
2009/03/16 PHP
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
php权重计算方法代码分享
2014/01/09 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
Javascript中神奇的this
2016/01/20 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
javascript实现滚动条效果
2020/03/24 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
React实现todolist功能
2020/12/28 Javascript
python实现给微信公众号发送消息的方法
2017/06/30 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
夏季奶茶店创业计划书
2014/01/16 职场文书
优秀员工推荐信
2014/05/10 职场文书
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript