`
加菲学Java
  • 浏览: 132566 次
  • 性别: Icon_minigender_1
  • 来自: 扬州
社区版块
存档分类
最新评论

window.opener checkbox传值问题

    博客分类:
  • Web
 
阅读更多

今天遇到页面之间的传值问题,一个页面以window.open()的方式打开一个新的页面,要把device.jsp页面列表中所有的

checkbox:像下面这样

 

<form name="queryListForm">
    <input type="checkbox" name="deviceList" value="device1"/> 
    <input type="checkbox" name="deviceList" value="device2"/> 
    <input type="checkbox" name="deviceList" value="device3"/> 
    ......
</form>

 

 传到deviceIssued.jsp页面中。

 这里有两种方式:

 第一种就是url地址传值,但是这样是有问题的,url传值是有长度限制的,一旦数据多的时候,就无法全部传递,所有这种方式只能放弃。

 第二种就是:

 

window.opener

 

 的方式获取父窗体的节点。

 

 

var deviceList = window.opener.document.queryListForm.deviceList;
var length = deviceList.length;
var checkValue = [];
for (i = 0; i < length; i++) {
	if(deviceList[i].checked) { // 判断checkbox是否被选择
		checkValue.push(deviceList[i].value);
	}
}
 

 

      但是写完测试后发现有个问题,选多个checkbox是没有问题的,但是只选择一个的时候就无法传递,用firebug进行了debug调试,发现只选择一个checkbox的时候length是undefined,选择多个的时候就没有问题,可以取得长度数值  。怎么试也没用,以为是浏览器的缓存问题,还关机重启了一下,结果发现还是不行。

      没办法,只能再用firebug再继续debug调试,这时候发现选择多个checkbox的时候deviceList其实是一个数组,deviceList.length肯定是能取到值的。而只选择一个的时候就是一个节点对象,

这时是没有deviceList.length是取不到任何值的,只会返回undefiend。所以这时必须得判断是选择多个还是一个,

即判断var length 是否是undefiend.

最后的代码改为如下即可:

 

 

$(function() {
	var deviceList = window.opener.document.queryListForm.deviceList;
	var length = deviceList.length;
	
	if(length == undefined) { // 只选择了一个checkbox
		$("#deviceParamList").val(deviceList.value);
	}else { // 选择了多个checkbox
		var checkValue = [];
		for (i = 0; i < length; i++) {
			if(deviceList[i].checked) { // 判断checkbox是否被选择
				checkValue.push(deviceList[i].value);
			}
		}
	
		$("#deviceParamList").val(checkValue);
	}
});
 

 

 

 

分享到:
评论

相关推荐

    字符串 window.open() window.opener window.name window对象等的总结

    本篇文章将深入探讨`window.open()`、`window.opener`、`window.name`以及`window`对象的一些核心概念,同时通过两个带有注释的页面示例(001.html和main.html)帮助理解这些知识点。 ### `window.open()` `window...

    js弹窗并返回值(window.open方式)

    window.opener.result = result; window.close(); } // 用户在b.html操作后调用sendResultAndClose sendResultAndClose('用户的选择'); // 在原窗口监听新窗口关闭事件 window.addEventListener('message', ...

    通过window.opener控制父窗体

    在发送窗口(子窗口)中,使用`window.opener.postMessage(data, targetOrigin)`发送消息,其中`data`是你要传递的数据,`targetOrigin`是接收窗口的源。在接收窗口(父窗口)中,需要添加事件监听器: ```...

    解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题

    本文将深入探讨一个这样的问题:`window.opener = null; window.close()` 这段代码在IE6中能够正常工作,但在IE7及更高版本中却失效的问题。 `window.opener` 是JavaScript中的一个属性,它引用了创建当前窗口的...

    javascript window.opener的用法分析

    比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为“name”的textbox中,就可以写为: window.opener.document.getElementById(“name”).value = “输入的数据...

    用window.open,opener实现网页间通信

    var txt = window.opener.document.getElementById("msg"); txt.value = "secondsaysyouwelcome"; }); } function secondcall(msg) { if (msg.indexOf("third") &gt; 0) { tw = window.open("third.html", ...

    window.opener用法和用途实例介绍

    window.opener.document.getElementById('orgNameId').value = name; window.close(); // 关闭子窗口 } } ``` 在上面的 `selectOrg` 函数中,当用户在子窗口中选择一个机构后,它会找到父窗口中的 `orgIdId` 和 ...

    刷新父窗口的多种方法

    window.opener.location.href = window.opener.location.href; ``` 这里的关键在于利用`location.href`属性来重新设置父窗口的URL,从而达到刷新的目的。需要注意的是,这种方式并不会触发浏览器的缓存机制,而是会...

    showModalDialog open弹出子窗口操作parent、opener父窗口及跨域处理

    opener.parentObj.elementObj.arrtr = 'str'; 3&gt; IE与FireFox对两个弹出窗口在跨域时的解析也有不同:通过window.dialogArguments操作父窗口时,在IE下不需要指定document.domain而在FireFox下则正好相反需要指定...

    JS window.opener返回父页面的应用

    window.opener.location.href = url; // 关闭当前的支付窗口 window.close(); } ``` 在实际应用中,需要注意跨域安全问题。由于同源策略的限制,`window.opener`在不同源之间可能无法正常工作。如果支付页面和...

    Javascript中封装window.open解决不兼容问题

    对window.open进行封装, 使其更好用, 且更兼容, 很多人说window.open不兼容,其实不是, 因为不能直接执行, 必须通过用户手动触发才行;看代码: 代码如下 var openWindow = function(url, options) { var str = ""; ...

    js关闭浏览器窗口及检查浏览器关闭事件

    [removed] function closeWin(){ window.opener=null; window.open(”,’_self’,”); window.close(); } [removed] &lt;a&gt;logout&lt;/a&gt; &lt;/body&gt; &lt;/html&gt; 火狐默认不支持js关闭浏览器窗口,可以在about:...

    window.showModalDialog以及window.open用法简介

    window.opener.document.getElementById("name").value = "输入的数据"; ``` 这会将新窗口中的数据赋值给父窗口ID为"name"的文本框。 接下来,`window.showModalDialog`是Internet Explorer 4及以上版本引入的方法...

    jsp 刷新父页面

    window.opener.location.href = window.opener.location.href 刷新以winodw.showModelDialog()方法打开的窗口 window.parent.dialogArguments.document.execCommand('Refresh'); 或 Response.Write("&lt;script&gt;...

    window.location.href页面跳转的用法(区别于redirect)

    window.opener.document.location.reload(); ``` #### 总结 通过本文的介绍,我们可以看到`window.location.href`不仅能够实现简单的页面跳转,还能灵活地应用于复杂框架结构中的页面跳转及刷新。相比`Response....

Global site tag (gtag.js) - Google Analytics