梅雪香, 你的代码我这里运行没有自动隐藏掉呀.
popup() 是个很特别的东西, 只要你在它之外的任何地方点击, 它都会自动隐藏, 并且它所加载的JS语句是不会被运行的.

解决方案 »

  1.   

    把onmouseover的注释去掉,在打开的popup里移动鼠标过一会就自动隐藏了
    我的环境是win2k pro sp4+ie6 sp1 我也不知道怎么会出现这样的情况,非常特别我并没有在其它的地方做任何点击操作,只是在popup上移动鼠标就自己关掉了js语句能够运行啊!!
      

  2.   

    <script language="javascript">
    var popUp;
    function SoftKeyboard(pwdObj){
    popUp=window.createPopup();
    ........
    ..........
      

  3.   

    hhjjhjhj(大头)(想变胡萝卜^^) ( ) 
    谢谢了啊
    对了
      

  4.   

    popUp.show(0,22,300,110,pwdObj);
    打开的窗口里,能不能取到pwdObj的引用?
      

  5.   

    真是奇了怪了. 我也是有POPUP()写的那个日历, 也有这种修改背景色文字颜色的程序, 我的也没有任何问题, 而运行你的代码就有了问题. 若是直接去掉TD里的 onmouseover 就没问题, 怪了.
      

  6.   

    如大头所述, 把 popUp 上升为全局变量这个问题就解决了, 但是没有道理的呀. 全局变量与函数内部变量又有何区别呢?
      

  7.   

    ........
    strHTML+='function TdMouseClk(TdObj){ ';
    strHTML+='parent.t1.value="XXX";';
    .........
    ........
    <input type="password" id=t1 onclick="SoftKeyboard(this)">
      

  8.   

    回: hhjjhjhj(大头)(想变胡萝卜^^) ( ) 
    我就是不想让popup对上层有信赖,所以我想不要用到上层的txt的id
    就像showmodoldialog那样有返回值也行,或能把这个对象的引用传到popup窗口里也行
    这样重用性更高一些
      

  9.   

    梅雪香, 那你可以用一个主面面的全局变量呀.
    var global, popUp;
    function SoftKeyboard(pwdObj){
    popUp=window.createPopup();
    global = pwdObj;
    WriteToPopup(popUp);
    popUp.show(0,22,300,130,pwdObj);
    } strHTML+='function TdMouseClk(TdObj){ ';
    strHTML+='parent.global.value="XXX";';
      

  10.   

    呵呵,那可没办法,popup对象的接口太少
      

  11.   

    我找了一种折中的方法,不完全信赖于text的id,但是必需得有个id
    本来我想能不能用重载window.createPopup()的方法传过去,但没实现.<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>softkeyboard</title>
    <style type="text/css">
    td{text-align:center; background-color:#FFFF99; vertical-align:middle}
    </style>
    <script language="javascript">
    var popUp=window.createPopup();
    var popBody=popUp.document.body;
    popBody.style.backgroundColor = "#FFFF99";
    popBody.style.border = "solid black 1px";
    function SoftKeyboard(pwdObj){
    WriteToPopup(popUp,pwdObj);
    popUp.show(0,22,300,110,pwdObj);
    }
    function WriteToPopup(popUp,pwdObj){
    var strHTML="<html><head>";
    strHTML+='<meta http-equiv="Content-Type" content="text/html; charset=gb2312">';
    strHTML+='<style type="text/css">';
    strHTML+='td{text-align:center; background-color:#FFFF99; vertical-align:middle}';
    strHTML+='</style>';
    strHTML+='<script language="javascript">';
    strHTML+='var curOverTd=null; var curClkTd=null; var CapsStatus="black"; var pwdObjectId=parent.document.getElementById("'+pwdObj.id+'");';
    strHTML+='function TdMouseOver(TdObj){ ';
    strHTML+='if(curOverTd){ ';
    strHTML+=' if(curClkTd==curOverTd){ ';
    strHTML+=' curOverTd.style.backgroundColor="red"; ';
    strHTML+=' curOverTd.style.color="white"; ';
    strHTML+=' }else{ ';
    strHTML+=' curOverTd.style.backgroundColor="#FFFF99"; ';
    strHTML+=' curOverTd.style.color="black";  } }';
    strHTML+=' TdObj.style.backgroundColor="blue"; ';
    strHTML+='  TdObj.style.color="white";';
    strHTML+=' curOverTd=TdObj;} ';
    strHTML+='function TdMouseClk(TdObj){ ';
    strHTML+=' if(curClkTd){ ';
    strHTML+=' curClkTd.style.backgroundColor="#FFFF99"; ';
    strHTML+=' curClkTd.style.color="black";  }';
    strHTML+=' TdObj.style.backgroundColor="red"; ';
    strHTML+='  TdObj.style.color="white";';
    strHTML+=' curClkTd=TdObj; ';
    strHTML+=' curOverTd=null; ';
    strHTML+='  pwdObjectId.value+=(CapsStatus=="black"?TdObj.innerText:TdObj.innerText.toUpperCase());';
    strHTML+=' }';
    strHTML+=' function btnCapsDown(btnObj){';
    // strHTML+=' /*alert(btnObj.style.color);*/';
    strHTML+=' if(CapsStatus=="black") CapsStatus="green";';
    //strHTML+=' btnObj.style.color=CapsStatus;}';
    strHTML+=' else CapsStatus="black"; ';
    strHTML+=' btnObj.style.color=CapsStatus=="black"?"#000000":"#33FF66";';
    strHTML+=' }';
    strHTML+=' function btnSpaceDown(){';
    strHTML+=' ';
    strHTML+=' }';
    strHTML+=' function btnBackDown(){';
    strHTML+=' ';
    strHTML+=' }';
    strHTML+=' function btnEnterDown(){';
    strHTML+=' ';
    strHTML+=' }';
    strHTML+='</scr'+'ipt></head> ';
    strHTML+='<body bgcolor="#FFFFFF" style="margin:0; border:0;overflow:hidden;" oncontextmenu="javascript:event.returnValue=false;" onselectstart="javascript:event.returnValue=false;"> ';
    strHTML+='<table cellpadding="0" cellspacing="0" border="1" style="TABLE-LAYOUT: fixed; width:100%;height:100%; border-collapse:collapse; cursor:default" bordercolor="#111111"> <tr>';
    var arr=new Array(",",".","/","1","2","3","4","5","6","7","8","9");
    for(var i=0;i<12;i++)
    strHTML+='<td width="8%" onMouseOver="TdMouseOver(this)" onClick="TdMouseClk(this)">'+arr[i]+'</td>';
    strHTML+='</tr><tr>';
    arr=new Array("0","a","b","c","d","e","f","g","h","i","j","k");
    for(var i=0;i<12;i++)
    strHTML+='<td onMouseOver="TdMouseOver(this)" onClick="TdMouseClk(this)">'+arr[i]+'</td>';
    strHTML+='</tr><tr>';
    arr=new Array("l","m","n","o","p","q","r","s","t","u","v","w");
    for(var i=0;i<12;i++)
    strHTML+='<td onMouseOver="TdMouseOver(this)" onClick="TdMouseClk(this)">'+arr[i]+'</td>';
    strHTML+='</tr><tr>';
    arr=new Array("x","y","z","`","-","=","\\","[","]",";","'","!");
    for(var i=0;i<12;i++)
    strHTML+='<td onMouseOver="TdMouseOver(this)" onClick="TdMouseClk(this)">'+arr[i]+'</td>';
    strHTML+='</tr><tr><td colspan="12"><table width="100%"  border="0" cellpadding="0" cellspacing="0">';
    strHTML+='<tr><td width="20%"><input type="button" value="Caps" style="font-weight:800 " onclick="btnCapsDown(this)" style="width:90% "></td>';
    strHTML+='<td width="35%"><input type="button" value="Space" onclick="btnSpaceDown()" style="width:90% "></td>';
    strHTML+='<td width="25%"><input type="button" value="BackSpace" onclick="btnBackDown()" style="width:90% "></td>';
    strHTML+='<td width="20%"><input type="button" value="Enter" onclick="btnEnterDown()" style="width:90% "></td>';
    strHTML+='</tr></table></td>';
    strHTML+='</tr></table></body></html>';
    popUp.document.write(strHTML);
    }
    </script>
    </head><body>
    <input type="password" id="txtPwd" name="txtPwd" onclick="SoftKeyboard(this)" readonly="readonly">
    </body>
    </html>
      

  12.   

    这样也可以
    ........
    <script language="javascript">
    var popUp;
    var tmp;
    function SoftKeyboard(pwdObj){
            tmp=pwdObj;
    popUp=window.createPopup();
    ........
    ........
    strHTML+='function TdMouseClk(TdObj){ ';
    strHTML+='parent.tmp.value="XXX";';
    .........
    这样不用ID了。
      

  13.   

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>softkeyboard:code by meixx</title>
    <script language="javascript">
    var oPopUp=null;window.createPopup();
    function SoftKeyboard(pwdObj){
    oPopUp=window.createPopup();
    var popBody=oPopUp.document.body;
    popBody.style.backgroundColor = "#FFFF99";
    popBody.style.border = "solid black 1px";
    WriteToPopup(oPopUp,pwdObj);
    oPopUp.show(0,22,240,100,pwdObj);
    }
    function WriteToPopup(oPopUp,pwdObj){
    var strHTML="<html><head>";
    strHTML+='<meta http-equiv="Content-Type" content="text/html; charset=gb2312">';
    strHTML+='<style type="text/css">';
    strHTML+='.td{text-align:center; background-color:#FFFF99; vertical-align:middle;font-size:13px}';
    strHTML+='.button{border:0;width:90%; height:95%;}';
    strHTML+='</style>';
    strHTML+='<script language="javascript">';
    strHTML+='var curOverTd=null; var curClkTd=null; var CapsStatus="black";';
    strHTML+='var pwdObjectId=parent.document.getElementById("'+pwdObj.id+'");';
    strHTML+='function TdMouseOver(TdObj){ ';
    strHTML+=' TdObj.style.backgroundColor="blue"; ';
    strHTML+='  TdObj.style.color="white";';
    strHTML+=' curOverTd=TdObj;} ';
    strHTML+='function TdMouseOut(TdObj){ ';
    strHTML+=' if(curClkTd==TdObj){ ';
    strHTML+=' TdObj.style.backgroundColor="red"; ';
    strHTML+=' TdObj.style.color="white"; ';
    strHTML+=' }else{ ';
    strHTML+=' TdObj.style.backgroundColor="#FFFF99"; ';
    strHTML+=' TdObj.style.color="black";  }';
    strHTML+=' } ';
    strHTML+='function TdMouseClk(TdObj){ ';
    strHTML+=' if(curClkTd){ ';
    strHTML+=' curClkTd.style.backgroundColor="#FFFF99"; ';
    strHTML+=' curClkTd.style.color="black";  }';
    strHTML+=' TdObj.style.backgroundColor="red"; ';
    strHTML+='  TdObj.style.color="white";';
    strHTML+=' curClkTd=TdObj; ';
    strHTML+=' curOverTd=null; ';
    strHTML+='  pwdObjectId.value+=(CapsStatus=="black"?TdObj.innerText:TdObj.innerText.toUpperCase());';
    strHTML+=' }';
    strHTML+=' function btnCapsDown(btnObj){';
    strHTML+=' if(CapsStatus=="black") CapsStatus="green";';
    strHTML+=' else CapsStatus="black"; ';
    strHTML+=' btnObj.style.color=CapsStatus=="black"?"#000000":"#33FF66";';
    strHTML+=' }';
    strHTML+=' function btnSpaceDown(){';
    strHTML+=' pwdObjectId.value+=" "';
    strHTML+=' }';
    strHTML+=' function btnBackDown(){';
    strHTML+=' pwdObjectId.value=pwdObjectId.value.substring(0,pwdObjectId.value.length-1)';
    strHTML+=' }';
    strHTML+=' function btnEnterDown(){';
    strHTML+=' parent.oPopUp.hide();';
    strHTML+=' }';
    strHTML+='</scr'+'ipt></head> ';
    strHTML+='<body bgcolor="#FFFFFF" style="margin:0; border:0;overflow:hidden;" oncontextmenu="javascript:event.returnValue=false;" onselectstart="javascript:event.returnValue=false;"> ';
    strHTML+='<table cellpadding="0" cellspacing="0" border="1" style="TABLE-LAYOUT: fixed; width:100%;height:100%; border-collapse:collapse; cursor:default" bordercolor="#111111"> <tr height="12">';
    var arr=new Array(",",".","/","1","2","3","4","5","6","7","8","9");
    for(var i=0;i<12;i++)
    strHTML+='<td class="td" valign="middle" width="8%" onMouseOver="TdMouseOver(this)" onMouseOut="TdMouseOut(this)" onClick="TdMouseClk(this)"><b>'+arr[i]+'</b></td>';
    strHTML+='</tr><tr height="12">';
    arr=new Array("0","a","b","c","d","e","f","g","h","i","j","k");
    for(var i=0;i<12;i++)
    strHTML+='<td class="td" valign="middle" onMouseOver="TdMouseOver(this)" onMouseOut="TdMouseOut(this)" onClick="TdMouseClk(this)"><b>'+arr[i]+'</b></td>';
    strHTML+='</tr><tr height="12">';
    arr=new Array("l","m","n","o","p","q","r","s","t","u","v","w");
    for(var i=0;i<12;i++)
    strHTML+='<td class="td" valign="middle" onMouseOver="TdMouseOver(this)" onMouseOut="TdMouseOut(this)" onClick="TdMouseClk(this)"><b>'+arr[i]+'</b></td>';
    strHTML+='</tr><tr height="12">';
    arr=new Array("x","y","z","`","-","=","\\","[","]",";","'","!");
    for(var i=0;i<12;i++)
    strHTML+='<td class="td" valign="middle" onMouseOver="TdMouseOver(this)" onMouseOut="TdMouseOut(this)" onClick="TdMouseClk(this)"><b>'+arr[i]+'</b></td>';
    strHTML+='</tr><tr height="12"><td class="td" colspan="12"><table width="100%"  border="0" cellpadding="0" cellspacing="0" style="margin:0">';
    strHTML+='<tr><td class="td" width="20%" valign="middle"><input type="button" value="Caps" style="font-weight:800 " onclick="btnCapsDown(this)" class="button"></td>';
    strHTML+='<td class="td" width="35%" valign="middle"><input type="button" value="Space" onclick="btnSpaceDown()" class="button"></td>';
    strHTML+='<td class="td" width="25%" valign="middle"><input type="button" value="Back" onclick="btnBackDown()" class="button"></td>';
    strHTML+='<td class="td" width="20%" valign="middle"><input type="button" value="Enter" onclick="btnEnterDown()" class="button"></td>';
    strHTML+='</tr></table></td>';
    strHTML+='</tr></table></body></html>';
    oPopUp.document.write(strHTML);
    }
    </script>
    </head><body>
    <input type="password" id="txtPwd" name="txtPwd" onclick="SoftKeyboard(this)" readonly="readonly">
    </body>
    </html>
    有空的朋友再帮测一下吧,一个软键盘的程序,很丑陋,但基本上可以用了