日期:2014-05-17  浏览次数:20714 次

window.showmodaldialog()苹果浏览器不支持?50分在线求解!!
父页面中: 
 
JScript code


function selectCooperate(obj){
    var userObject=new Object();
    userObject.userString=document.getElementById(obj).value;
    var selectUrl="${ctx}/DispatchAction.do?efFormEname=UITM25&serviceName=TMTask&methodName=selectAssistantUser&orgcode=&orgcodeFilter=${data.rootorg }&taskGuid=${data.taskparentguid}&allLeader=&random="+Math.random();

    window.open(selectUrl,'newwindow','height=300,width=1000,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');
    var a =document.getElementById("i-0-valueString").value;
       if(a!=undefined){
  
        document.getElementById(obj).value=a;
        selectCooperate_view(obj+"_view",a);
    }

}
       


子页面中:

JScript code


function okOrgUser(){
    var users=document.getElementById("user_select");
    var userString="";
    for(var i=0;i<users.options.length;i++){
        var currentOption=users.options[i];
        if(i!=0)
            userString+=";";
        userString+=currentOption.value+",";
        userString+=currentOption.userName+",";
        userString+=currentOption.orgcode+",";
        userString+=currentOption.orgname;
    }

    window.opener.document.getElementById("i-0-valueString").value=userString;  //i-0-valueString 父页面中的文本框
    window.close();

}




问题是:window.opener.document.getElementById("i-0-valueString").value=userString; 赋值成功后,父页面需再重新打开子页面再关闭才能看到值。







------解决方案--------------------
你的代码中,并没有用showmodaldialog(),而是open()新窗口。

这样的话,主窗口的代码会继续往下执行,所以:
var a =document.getElementById("i-0-valueString").value;
得到的是子窗口还没修改的值。

所以在你的另一个帖子里面,建议你修改为子窗口调用父窗口回调函数来处理所有赋值逻辑的模式。
------解决方案--------------------
一楼说的很好了

那我就推荐一下用ymPrompt插件吧 封装的很好 包括打开页面 和 回调函数等等! 还有其他功能 狠好用 界面能得到美化!