项目中出现一个bug,就是在弹出框选择了部门的值以后,写入父页面,当在点击查找部门的按钮后,已经选择的值要带入到弹出框中。类似下面的情况。

解决方案就是利用showModalDialog 与json进行传值

父页面在点击按钮调用下面的js方法。js代码

function updateVisibleDept() {//获得部门ID和部门名称var visibleDeptIds= document.getElementById("userVisibleDeptIds").value;var deptNames =document.getElementById("userVisibleDeptNames").value;var obj = new Object();obj.deptId = visibleDeptIds;obj.deptName = deptNames;var url="../common/user_manage!showUserUpdateDeptPage.action";var dataJson = window.showModalDialog(url,obj,"dialogWidth = 450px;dialogHeight =400px");var deptNames =$("userVisibleDeptNames");var deptIds =$("userVisibleDeptIds");if(dataJson != null ) {deptNames.setValue(dataJson.dataName);deptIds.setValue(dataJson.dataId); }}

弹出页面的js代码,在数据加载完成后显示

function afterWindowOnload() {var obj = window.dialogArguments ;if(obj !=null) {//得到拼接的deptId和名称var deptIds = obj.deptId.replace(/(^\s*)|(\s*$)/g, "");var deptNames = obj.deptName;//获得selectvar visbleDept = document.getElementById("selectedData");//创建optionvar opt = document.createElement('option');if(deptIds != "" && deptIds !=null) {if(deptIds.indexOf(",") == -1 ) {//如果不包括","则说明只选择了一个部门 获得为空、空字符串opt.setAttribute("value", deptIds);opt.innerText = deptNames;visbleDept.appendChild(opt); //移除已经选择的部门fnRemoveItem(deptNames);}else {var deptIdArray = deptIds.split(",");var deptNameArray = deptNames.split(",");visbleDept.options.length = deptIdArray.length;for(i=0 ; i<deptIdArray.length;i++) {visbleDept.options[i].text = deptNameArray[i];visbleDept.options[i].value = deptIdArray[i];fnRemoveItem(deptNameArray[i]);}}}}}
//移除已经选过的部门function fnRemoveItem(strText){var selTarget = document.getElementById("selectingData");for(var i=0;i<selTarget.options.length;i++){if(selTarget.options[i].text == strText){selTarget.remove(i);i = i - 1;//注意这一行}}} 

在选择部门点击确定以后,返回父页面并给父页面赋值

function getSelectedDept() {var dataJson = getSelectedData();window.returnValue = dataJson;closeWin();}

getSelectData();

// 得到选择的数据function getSelectedData() {var oRight = $("selectedData");var dataJson = {dataId:"", dataName:""};if(!hasOptions(oRight)) {return dataJson; } var dataId = "";var dataName = "";for (var i=0;i<oRight.options.length;i++) {if (dataId == "") {dataId = oRight.options[i].value;dataName = oRight.options[i].text;}else {dataId = dataId + "," + oRight.options[i].value;dataName = dataName + "," + oRight.options[i].text;}}dataJson.dataId = dataId;dataJson.dataName = dataName;return dataJson; }

相应的select

 <select id="selectedData" name="selectedData" class="selectDept" οnclick="unSelectData()" multiple style="width: 85%; height: 95%; overflow: auto;font-size: 18px;background-color: #CDD0FD"></select>

其中红色部分是父页面的值传递给弹出框,绿色部门则是弹出框的值返回给父页面。

图片中的解决方法也是利用该方法,只是因为过程比上面的更稍微复杂一些所以没有写出来 ,不过思路是一样的。

showModalDialog传值相关推荐

  1. showModalDialog 传值及刷新

    (一)showModalDialog使用例子,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口. farther.html ------------------------- ...

  2. window.open()和window.showModalDialog 的使用及传值操作

    本人在使用时主要实现如下个功能, 以对话框形式弹出画面,且要求对话框置顶,不可操作其他画面,并且关闭画面时刷新父页面. window.open 可实现以对话框形式弹出画面,并且关闭画面时刷新父页面.但 ...

  3. 自己使用window.open和window.showModalDialog在父子窗口传值的实践简单总结

    朋友最近问我一个问题:子窗口添加数据并返回给父窗口一些添加成功的数据,同时父窗口刷新显示添加前的页面.相比很多人都相当熟知了,顺便记录一下: ==========================win ...

  4. Chrome不支持showModalDialog的解决方案

    Chrome不支持showModalDialog的解决方案 昨天在使用showModalDialog的时候,遇到如下问题: 如果子窗口被刷新过,那么父窗口就接受不到子窗口的返回值. 为了解决这个问题, ...

  5. asp.net url传值,弹窗

    一,<a>标签链接式传值 1, <a href="News_list.aspx?ClassID=<%#((DataRowView)Container.DataItem ...

  6. 模式窗口window.showModalDialog()的用法

    模式窗口的用法 一.问题: 我想弹出一个窗口,然后在弹出的窗口里,选择或输入一些信息,要求这些信息返回到父页面. 建立父页面:a.htm <html> <head>     & ...

  7. 关于模态窗口(showModalDialog)的专题【收藏】

    关于模态窗口(showModalDialog)的专题[收藏] 转自:http://www.cnblogs.com/donnet/articles/1039509.html 1.模态窗口的打开,mode ...

  8. window.showModalDialog不兼容解决办法

    1.传值的解决办法 1.直接设置父窗口的DOM对象的值. window.opener.document.getElementById("parentWindowControlId" ...

  9. window.showModalDialog() 过时替代方案

    一.window.showModalDialog 方法说明 window.showModalDialog( ) 方法的作用是创建和展示一个指向特定网页的模态对话框. 该方法已经过时,特性已经从 Web ...

最新文章

  1. 公共安全再受质疑 看安防语音对讲新趋势
  2. 设计模式中的开闭原则
  3. 【Hadoop学起来】分布式Hadoop的搭建(Ubuntu 17.04)
  4. linux-type命令查看类型
  5. 滴滴顺风车再调整服务时间:男女用户一视同仁
  6. Quartus13.1全编译出现引脚错误(神级bug)
  7. linux 下小技巧之-统计文件夹下面子文件夹下面的个数
  8. python统计各分数段人数并可根据选择绘制不同的图形_python习题整理
  9. 网络协议从入门到底层原理(8)HTTPS(成本、通信过程、TLS1.2的连接,配置服务器HTTPS)
  10. Java基础教程——字符流
  11. css3 呼吸的莲花_心肾呼吸法—莲花能量冥想*
  12. android 图片虚化代码,Android图片虚化源码
  13. 盘点PS使用小技巧。
  14. 关于2048小游戏的开发感想
  15. 【opencv 450 Image Processing】Image Moments 图像矩
  16. AD与AAD区别和联系
  17. IntelliJ IDEA的数据库管理工具实在太方便了
  18. PIPIOJ 1056: PIPI的目标Ⅱ
  19. Assembly 调用的目标发生了异常
  20. “NING咖啡”来袭,李宁的流量把戏还是真未来?

热门文章

  1. 分类器评估指标——混淆矩阵 ROC AUC KS AR PSI Lift Gain
  2. 公司注册需要什么印章?企业刻印印章的目的是什么?
  3. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day16】—— Spring框架2
  4. 使用欧镭2D雷达ROS驱动
  5. 解决nexus 6p 无限重启的问题。nexus 6p 刷入twrp,magisk
  6. easyui01人门基础
  7. 江苏高等学校计算机等级考试大纲与样卷,江苏省高等学校计算机等级考试大纲(2015 年修订).pdf...
  8. BSCI验厂考勤资料工资作假不一致解决方案
  9. QtCreator影子构建与默认编译目录
  10. 网络、浏览器专题重点知识(含原理)