众所周知,asp.net 所有的控件必需放在有 runat="server"的form之内,而thickbox它所创建的层是嵌入在<body>中,从它代码可以看出 来$("body").append(...),而当你在调用thickbox的时候,它会将你指定的元素的所有子元素移动到它定义的结构里面,这样的话 就出问题了,移动后的元素将不在<form runat="sever"></form>中,那么指定元素里的所有服务器控件都将无法执行后台代码。
这就是根本的原因,口说无凭,上代码:
为了解决这个问题,我将thickbox.js做了一点改写
之后我将我试验的页面调用thickbox层前后代码做了一下对比,问题马上就显露出来了。
这是没调用thickbox前的页面代码:
是调用thickbox后的代码:
原因找到了,如何解决呢,只需要吧thickbox里的$("body").append()改为$("#selector").append(),这个#selector只要在form1之中即可。问题得到圆满的解决,而且在FF IE6中均显示正常……