我用了http://hi.baidu.com/elseif/blog/item/30dfe80136b98b071d95839e.html 里面的js来弹出窗口加载另一个页面。稍作了修改。
但是有时候(50%)弹出的页面中的文本框都是无法输入的,仿佛给加了readonly属性一样,但dropdownlist和button却是可以用的。
这种有可能发生的问题最难debug了。请问各位有没有碰到过。我考虑可能是那个的js(毕竟是拿过来用的)是不是设置了一些属性导致的。
但我仔细看过好像没有能得到这种效果的代码行。我自己的其他代码更没有做过类似的功能。

解决方案 »

  1.   

    那都是因为网络差的原因吧。
    但是我是在自己的机器上开发测试,访问localhost没有理由加载不完全啊。
      

  2.   

    你确定文本框不是readonly 属性?
      

  3.   

    你在文档onload之后写个代码,对所有的input的readonly做一个设置,然后看看是不是还是不能输入.如果不是就是你使用的别人的 js有问题,去检查一下.
      

  4.   

    代码太多就就不贴了吧。尤其是用了很多ascx控件,一个套一个的。
    现在再说点新的症状:如果在弹出的div不能输入东西的情况下,刷新那个div(在Div的IFrame内部右键刷新,不是整个页面刷新)
    后有时会解决问题。也就是在重新load弹出页面后有时就好了
    To myvicy: 按你的方法查过了,onload之后alert了一下其中一个input的readonly属性是false的,说明不是只读的。
    而如果是别人的js有问题,上面的连接里就是js的内容。
      

  5.   

    又发现一个重大的症状,不仅仅是input不能输入,连用鼠标拉选文字都不行。也就是不是readonly的问题。
    而是整个页面被东西挡住了的感觉。但是看上面的js,popup的window应该是在最上层的啊。比蒙布的z-index要高两层。
    而且如果是蒙布,那么会看到一层白色的东西。但现在也没有。
      

  6.   

    很可能被div遮住了,因为button可用但input不可用这很可能是被div蒙住了
      

  7.   

    我同意是被div挡住了。可是如何解释有时候不被挡住而有时候被挡住呢?而且为什么有时候在弹出的IFrame内refresh一下就好了呢?
      

  8.   

    不是我不愿意贴,是没找到地方放。这里只能贴几个字符。根本不够用,而且我原来的帖子里已经有一个最初版本的js文件了。
    现在的js我放在 http://www.driveway.com/t2o7h1k5r4  ,和原来的改变就是我变成了支持同时弹出多个div,我把它原来的蒙布功能去掉,用来在拖动的时候显示,这样不被以前的layer里的IFrame把mousemove事件捕捉掉。好像还加了一个close时候的callback吧。其他改动不大。调用的时候
    var pop=new Popup({ contentType:1,width:950,height:600});
                         pop.setContent("contentUrl","newpage.aspx");
                         pop.setContent("title","New record");             
                         pop.build();
                         pop.show(); 如果在newpage.aspx中含有文本框,并且打开后点击过文本框。下次再打开的时候很可能就点不了那个文本框了。  
      

  9.   

    没有人能回答吗?
    我在说一下重现的步骤:
    1.下载 http://www.driveway.com/t2o7h1k5r4     里面的js文件,加入项目中,注意和下面代码的引用位置匹配,我是放在../JS/里的。
    2.新建一个popup2.aspx, 对应cs文件无代码,这里仅贴aspx的代码,请拷贝<html/>中的代码。不能再少了。
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestPopup2.aspx.cs" Inherits="WebApplication3.SandBox.TestPopup2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>   
       <script type="text/javascript" language="javascript" src="../JS/popup.js"></script>
        <script language="javascript" type="text/javascript" >
        function f1()
        {
            var   pop=new   Popup({   contentType:1,width:950,height:600}); 
                                              pop.setContent("contentUrl","Testpopup2.aspx"); 
                                              pop.setContent("title","New   record");                           
                                              pop.build(); 
                                              pop.show();       }
       
       </script>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button"  OnClientClick="f1();return false;"/>
             <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        </div>
        </form>
    </body>
    </html>3.编译,运行。点击页面的button,弹出popup后点popup window的textbox,只要光标落入其中即可。
    4.关闭该popup window(右上角的X按钮图片没有,没关系,也可以点),再次点原页面的button,这次出来的popup就没办法点到textbox输入任何东西了。
    现在重现步骤和每一行代码都在这里了。看看有没有高手路过。
      

  10.   

    顶。问题都在http://www.driveway.com/t2o7h1k5r4的代码里,就没人能解决吗?
      

  11.   

    又发现一个重大的症状,不仅仅是input不能输入,连用鼠标拉选文字都不行。也就是不是readonly的问题。 
    而是整个页面被东西挡住了的感觉。但是看上面的js,popup的window应该是在最上层的啊。比蒙布的z-index要高两层。 
    而且如果是蒙布,那么会看到一层白色的东西。但现在也没有。
    ----------------------------------------------------
    看到这里 感觉这个就很明了了
    是加了蒙版层,而层可以设置透明度,至于dropdownlist可用 他本身就是顶端元素。即便不蒙版 用js也很简单,直接获取搜有input元素,设置readonly就好,不能拉取选择同样可用通过js实现...
      

  12.   

    呵呵,没有人愿意仔细看代码。我说的白色的蒙布,是指代码中特定的那一层。
    现在我已经解决了,确实不是被那一层挡住,而是被另一层。含有IFrame的内容层。
    在隐掉窗口的时候,我虽然用removechild把更上层的div给去掉了,但并没有remove这个IFrame.
    似乎特别remove掉这个IFrame就解决了。
    但是这个贴并没有结束。removechild应该会把子孙节点都删除掉的阿。为什么它僵而不死呢?
      

  13.   

    昏,难道写个IFrame,csdn的论坛就开始弹出js error了吗
    The removed child node still exists in memory, but is no longer part of the DOM. You may reuse the removed node later in your code, via the oldChild object reference. 
      

  14.   

    实在感谢!!!我遇到的问题和你一样的
    我看贴从来没有回贴,,,
    今天遇到这个Bug确实是最难的,烦了我N多天了,,
    以前以为是focus焦点问题,现在看来不是
    ------------------------------------------------------------------------------
    在隐掉窗口的时候,我虽然用removechild把更上层的div给去掉了,但并没有remove这个IFrame. 
    似乎特别remove掉这个IFrame就解决了。 
    但是这个贴并没有结束。removechild应该会把子孙节点都删除掉的阿。为什么它僵而不死呢? 
    ------------------------------------------------------------------------------我想应该是iFrame并没有在内存中清除掉导至的...应该是微软IE的一个removechild的大BUG
    再次感谢!!!!!
      

  15.   

    用firebug看看你隐藏的东西是不是挡在前面了
      

  16.   

    这个问题应该解决了,如下方法:
    在移除iframe之前先把该iframe的src设为空。
    然后再remove()掉该iframe
    最后移除掉包含该iframe的容器如果还不行有一个hack方法:在无法获得焦点的页面按一下Tab键,该页面即可以获得焦点。其它正在进一步研究中……
      

  17.   

    遇到了同样的问题 在div里面套一个文本框,导致文本框在ie下面无法输入文字,火狐上面是好的,求解决方案
      

  18.   

    很好解决
    $(function(){
    $("input[type=text]").click(function(){
       $(this).focus();
    });
    });