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 相关文章推荐
javascript之对系统的toFixed()方法的修正
May 08 Javascript
javascript匿名函数应用示例介绍
Mar 07 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
Dec 26 Javascript
bootstrap配合Masonry插件实现瀑布式布局
Jan 18 Javascript
Koa项目搭建过程详细记录
Apr 12 Javascript
koa socket即时通讯的示例代码
Sep 07 Javascript
vue项目使用微信公众号支付总结及遇到的坑
Oct 23 Javascript
jQuery实现表格的增、删、改操作示例
Jan 27 jQuery
浅谈JS中this在各个场景下的指向
Aug 14 Javascript
layui table 列宽百分比显示的实现方法
Sep 28 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
Jul 17 Javascript
手把手带你搭建一个node cli的方法示例
Aug 07 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中MVC的开发经验分享
2012/05/17 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
Javascript学习笔记2 函数
2010/01/11 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
python比较两个列表大小的方法
2015/07/11 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
比利时家具购买网站:Home24
2019/01/03 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
UNIX文件名称有什么规定
2013/03/25 面试题
品质主管的岗位职责
2013/12/04 职场文书
运动会通讯稿300字
2014/02/02 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
硕士生找工作求职信
2014/07/05 职场文书
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers
python 镜像环境搭建总结
2022/09/23 Python