js父页面如何通过子页面查询后回填到父页面的input框中去

父页面(如下图所示):

代码:

<input type="hidden" name="CUSTOMER_ID" id="CUSTOMER_ID" value="<!--{$data.CUSTOMER_ID}-->" />
<input type="text" readonly id="CUSTOMER_NAME" name="CUSTOMER_NAME" value="<!--{$data.CUSTOMER_NAME}-->"/>
<a href="javascript:;" class="btn btn-mini btn-info" οnclick="crm.choose('/Crm/Customer/search','CUSTOMER_ID,CUSTOMER_NAME')">添加</a>
<a href="javascript:;" class="btn btn-mini" οnclick="crm.clear('CUSTOMER_ID,CUSTOMER_NAME')">清空</a>
对应的两个crm.choose和crm.clear函数
var crm = {};

crm.choose = function(url,param){
	window.open(url + "/SEARCH_PARAM/" + param,'',"toolbar=no,menubar=no,scrollbars=yes, resizable=no, status=no");
}

crm.clear = function(param){
	var arr = param.split(',');
	var obj = '';
	for(var i in arr){
		obj += "#"+arr[i]+',';
	}
	obj = obj.substring(0,obj.length - 1);
	$(obj).val('');
}

重点是crm.choose


对应的父类控制器中定义如下一个函数

//搜索
	public static function jsHandle($data){
		$param = rtrim(I("post.SEARCH_PARAM",''),',');
		$param_arr = array_filter(explode(",",$param));
		$js = '';
		foreach($param_arr as $v){
			$arr = explode("@",$v);
			if(count($arr) == 2){
				$datas = "$('#{$arr[0]}',window.opener.document).val($(this).attr('{$arr[0]}'));";
			}else{
				$datas = "$('#$v',window.opener.document).val($(this).attr('$v'));";
			}			
			$js .= $datas;
		}
		if($js != ''){
			$js .= "callclose = true;";
			foreach($data as $k => $v){
				$dome = '';
				foreach($param_arr as $v1){
					$arr = explode("@",$v1);
					if(count($arr) == 2){
						$datas = " {$arr[0]}='{$v[$arr[1]]}' ";
					}else{
						$datas = " $v1='{$v[$v1]}' ";
					}
					$dome .= $datas;
				}
				$data[$k]['data'] = $dome;
			}
		}
		return array("data"=>$data,"js"=>$js);
	}	

对应的控制器中search方法加入如下一句

//搜索
$data = parent::jsHandle($data);

返回的list列表页面定义如下
<pre name="code" class="javascript"><script type="text/javascript">
$(function(){
	//搜索
	var callclose = false;
	$(".callfill").click(function(){
		<!--{$js}-->
		if(callclose == true) window.close();
	})
});
</script>

同时在输出的行上添加如下信息
<tr class='customer_row callfill' customer_id='<!--{$v.CUSTOMER_ID}-->' <!--{$v.data}-->>


至此完成。

可以通过点击检索出来的列表行实现回填


以下是解析生成的list列表页面js代码
<script type="text/javascript">
$(function(){
	//搜索
	var callclose = false;
	$(".callfill").click(function(){
		$('#CUSTOMER_ID',window.opener.document).val($(this).attr('CUSTOMER_ID'));
                $('#CUSTOMER_NAME',window.opener.document).val($(this).attr('CUSTOMER_NAME'));
                callclose = true;
                if(callclose == true) window.close();
	})
});
</script>


 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扬子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值