ASP.NET下使用jQuery UI下的Dialog,服务器端按钮无响应的问题。
JQuery下的UI控件似乎是有问题的,某天我从凌晨两点调试一个JQuery Dialog,一直到早上8:00都没有调试出来。当时我在Dialog里面放置了一个服务器按钮,并让按钮和CodeBehind里的一个事件处理函数绑定,但是奇怪的是怎么点击按钮,都不响应后面的事件函数,整得我直抓狂。
天亮后,Google了一下,终于找到原因:JQuery会把Dialog的元素append到Body里面,而不是form里面,狂汗。几百万使用JQuery UI的人被涮了一把,过于信任JQuery UI团队了。
我找到了3种解决方法:
第1种方法:
使用代码:$("#dialog").parent().appendTo("/html/body/form[0]");
第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种方法,服务器事件可以响应,效果也不错。