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 相关文章推荐
js获取提交的字符串的字节数
Feb 09 Javascript
JavaScript传递变量: 值传递?引用传递?
Feb 22 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
Apr 24 Javascript
new Date()问题在ie8下面的处理方法
Jul 31 Javascript
JavaScript实现三阶幻方算法谜题解答
Dec 29 Javascript
jquery判断至少有一个checkbox被选中的方法
Jun 05 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
javascript实现标签切换代码示例
May 22 Javascript
ES6下React组件的写法示例代码
May 04 Javascript
Angular通过angular-cli来搭建web前端项目的方法
Jul 27 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
May 13 Javascript
Vue组件化(ref,props, mixin,.插件)详解
May 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
php 网上商城促销设计实例代码
2012/02/17 PHP
php分页代码学习示例分享
2014/02/20 PHP
PHP异常处理浅析
2015/05/12 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
React Native基础入门之初步使用Flexbox布局
2018/07/02 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
Python爬取网页信息的示例
2020/09/24 Python
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
编辑找工作求职信分享
2014/01/03 职场文书
个人借款担保书
2014/04/02 职场文书
房产授权委托书范本
2014/09/22 职场文书
杨善洲电影观后感
2015/06/04 职场文书
团支部书记竞选稿
2015/11/21 职场文书
2016年少先队活动总结
2016/04/06 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python