手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >jQuery UI的Dialog无法提交问题的解决方法
jQuery UI的Dialog无法提交问题的解决方法
摘要:具体表现为:1.提交按钮失效,点击后无任何反应。2.即便是使用其它手段使页面产生提交,服务器端也无法取到Dialog中的表单数据。原因:JQ...

具体表现为:

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种方法,服务器事件可以响应,效果也不错,可以优先考虑。

【jQuery UI的Dialog无法提交问题的解决方法】相关文章:

jQuery 遍历函数详解

png在IE6 下无法透明的解决方法汇总

iscroll.js的上拉下拉刷新时无法回弹的解决方法

jQuery的Scrollify插件实现滑动到页面下一节点

基于jQuery实现的无刷新表格分页实例

JQuery勾选指定name的复选框集合并显示的方法

jQuery实现不断闪烁文字的方法

jQuery替换textarea中换行的方法

微信jssdk在iframe页面失效问题的解决措施

jQuery判断指定id的对象是否存在的方法

精品推荐
分类导航