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中文入门指南,翻译加实例,jQuery的起点教程
Jan 13 Javascript
Jquery 基础学习笔记
May 29 Javascript
js验证是否为数字的总结
Apr 14 Javascript
JavaScript数据结构和算法之二叉树详解
Feb 11 Javascript
轻松学习Javascript闭包函数
Dec 15 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
Feb 25 Javascript
javascript正则表达式总结
Feb 29 Javascript
正则表达式(语法篇推荐)
Jun 24 Javascript
bootstrap响应式表格实例详解
May 15 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
Sep 21 Javascript
小程序如何自主实现拦截器的示例代码
Nov 04 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
Jul 28 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强制下载类型的实现代码
2011/04/21 PHP
去除php注释和去除空格函数分享
2014/03/13 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
php实现session共享的实例方法
2019/09/19 PHP
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
2016/08/25 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
详解js中的几种常用设计模式
2020/07/16 Javascript
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
Python Web服务器Tornado使用小结
2014/05/06 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
anaconda如何查看并管理python环境
2019/07/05 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
高中军训感言400字
2014/02/24 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
司法所长先进事迹
2014/06/02 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
工作简历的自我评价
2019/05/16 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
解析原生JS getComputedStyle
2021/05/25 Javascript
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android