父级窗口操作嵌入的iframe radio选中失效问题

业务场景是需要根据json来注入嵌入的iframe 表单的值,其中json的key就是表单元素的name  value是元素的值,本来以为很简单,思路先是通过获取iframe 里的对应name的元素,再判断元素 type,如果是text 就直接赋值,如果是单选,就根据json的value来匹配对应的单选的值的那个元素,再设置选中,但在设置单选框选中这一环节卡住了,虽然获取到了单选框对应值的元素,但是没办法让其显示为选中状态,属性设置的是checked=true 但就是选中不上,用了 attr  prop都没用,因为iframe 引入的那个表单用的是layUi 框架,但是父级界面没有使用layUI,看到网上说设置后 须再次渲染,使用form.render(),显然父级窗口没有用layUi,很自然报错 $().render() is not a funciton 

父级窗口在操作iframe 嵌套的layui的radio 时,使用

$(element[i]).next().click();

即可解决问题,其中element[i]指的是radio元素。

完整代码如下:

var iframe=document.getElementById("loadForm").contentWindow;
		var dataStr=$("#showData").val();
		if(!isEmpty(dataStr)){
			var dataJson=JSON.parse(dataStr);
			console.log(dataJson);
			for(var key in dataJson){
				//TODO 根据key获取iframe里的元素,判断其type 根据type来注入key获取的值 并将元素            设置为不可编辑
				var element=iframe.document.getElementsByName(key);
				var type=element[0].getAttribute("type");
				if(type=="text"){
					element[0].value=dataJson[key];
					element[0].setAttribute("disabled",true);
				}else if(type=="radio"){
					for(var i=0;i<element.length;i++){
						if(element[i].value==dataJson[key]){
							$(element[i]).next().click();
						}
						element[i].setAttribute("disabled",true);
					}
				}
				
			}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值