日期:2014-05-18  浏览次数:20518 次

showmodaldialog回穿值问题
有2个页面,父页面是这样的:
1.aspx
function   select_open(obj)
                {
                        var   txt=showModalDialog( "../Share/Emp_Plural.aspx ",window, "dialogWidth:600px;dialogHeight:350px;scrollbars:no;help:no; ");
                        var   add=document.getElementById(obj);
                        add.value=txt;
                }

obj是一个text文本框,用来接收对话框返回值的.

对话框页面是这样的:
2.aspx

...
<input   id= "confirm "   type= "button "   value= "確認 "   class= "button "   onclick= "send() "   />
                                                                <input   id= "cancel "   type= "button "   value= "取消 "   class= "button "   onclick= "window.close() "   />
...

function   send()
        {
                var   lst2=document.getElementById( "lib_emp2 ");
                var   len=lst2.length;
                var   txt= " ";
                for(var   i=0;i <len;i++)
                {
                        txt+=lst2.options(i).text+ "   ";
                }
                //傳值
                window.returnValue=txt;
                window.close();
        }
这里把txt作为返回值传给父窗体
问题是:我如果在弹出的对话框中选择了内容,传回去的值正常;但是如果我点“取消”,那么在父窗体中的文本框就会被赋值成“undefine”,刚才有的值也没了,而且点对话框的“X”按钮时也是这样,怎么解决?

------解决方案--------------------
那是因为点了关闭或者取消没有给returnValue赋值

你可以不使用returnValue,
直接调用父窗口的函数
或者给父窗口一个变量赋值
具体showmodaldialog的用法请参考
http://dev.csdn.net/article/27760.shtm

------解决方案--------------------
var add=document.getElementById(obj);
add.value=txt;

判断一下返回值没有 没有就不用 add.value=txt; 了