問題:
給用戶新增優惠券,單個用戶,單個優惠券,新增的話,用輸入窗點擊事件,點擊后彈出一個子窗口列表頁,選擇數據后,點擊確定,信息傳回父窗口,主要是解決傳值的問題。
解決思路:
使用的是layui的前端框架,如下代碼:給輸入框增加 selectUser()事件,
<dl>
<dt>選擇用戶</dt>
<dd>
<asp:TextBox ID="txt_user" runat="server" CssClass="input normal" datatype="*" onclick="selectUser()"></asp:TextBox>
<input type="hidden" name="userId" value="" id="userId"/>
</dd>
</dl>
<dl>
<dt>選擇優惠券</dt>
<dd>
<asp:TextBox ID="txt_coupons" runat="server" CssClass="input normal" datatype="*" onclick="selectCoupons()"></asp:TextBox>
<input type="hidden" name="couponsId" value="" id="couponsId"/>
</dd>
</dl>
點擊后觸發下面代碼,使用的是http://www.layui.com/doc/modules/layer.html,中的方法,
1 // 選擇用戶 2 function selectUser() { 3 layer.open({ 4 type: 2, 5 title: '選擇用戶', 6 shadeClose: true, 7 shade: 0.8, 8 area: ['52%', '70%'], 9 content: '../selectInfo/user_personal_list.aspx', //iframe的url 10 btn: ['確定', '關閉'], 11 yes: function (index) { 12 //當點擊‘確定’按鈕的時候,獲取彈出層返回的值 13 var res = window["layui-layer-iframe" + index].callbackdata(); 14 $('#txt_user').val(res.title); 15 $('#userId').val(res.id); 16 //打印返回的值,看是否有我們想返回的值。 17 console.log($('#userId').val()); 18 //最后關閉彈出層 19 layer.close(index); 20 }, 21 cancel: function () { 22 //右上角關閉回調 23 } 24 25 }); 26 }
然后,我們在點擊開的子窗口的頁面,加上如下js代碼,check事件,是選擇事件,選中哪一行后,獲取相應信息,然后把值傳遞給hidden的標簽,然后把數據放入callbackdata回調函數,傳給父窗口,OK,解決解決子窗口回調參數問題。
1 <script type="text/javascript"> 2 var callbackdata = function () { 3 var data = { 4 id: $('#couponsID').val(), 5 title:$('#couponsName').val() 6 }; 7 return data; 8 } 9 10 function check(obj) { 11 var son = $(obj).parent(); 12 var id = son.next('input').val(); 13 var title = son.parent().next('td').find('a').html(); 14 $('#couponsID').val(id); 15 $('#couponsName').val(title); 16 } 17 </script>
這里沒有放隱藏的標簽,各位請自己增加,不然沒有數據會報錯
