這篇文章給大家分享的是有關(guān)layui彈出層怎么傳值的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
站在用戶的角度思考問題,與客戶深入溝通,找到新華網(wǎng)站設(shè)計與新華網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋新華地區(qū)。
layui彈出層傳值的實現(xiàn)方法:1、從主窗口傳值到彈出層;2、從彈出層傳值到主窗口;3、通過session互傳;4、通過調(diào)用父窗口的函數(shù)從而獲取到父窗口的值。
主要有兩部分
從主窗口傳值到彈出層
從彈出層傳值到主窗口
通過session互傳
通過調(diào)用父窗口的函數(shù)從而獲取到父窗口的值(相反也是可以的)
1、從主窗口傳值到彈出層
首先是js
changefileone函數(shù)時按鈕綁定事件,按鈕點擊后調(diào)用這個函數(shù)然后彈出彈出層,加載changefile.html界面
然后success提前加載changefile的form數(shù)據(jù)(從主窗口傳值到彈出層)
//bootstraptable的修改,點擊按鈕的時候自動選中該行,因此可以獲取到整行的值 function changefileone() { var rowselect = $("#menuTable").bootstrapTable('getSelections'); //取得當(dāng)前選定的selectItem對象,其中包括整行值 console.log(rowselect); layer.open({ title: "修改文件屬性", type: 2, content: "changefile.html", area: ['50%', '70%'], skin: "layui-layer-molv", btn: ['確定', '關(guān)閉'], success: function (layero, index) { //成功獲得加載changefile.html時,預(yù)先加載,將值從父窗口傳到 子窗口 //// console.log(obj.data.editAble); let body = layer.getChildFrame('body', index); //console.log(rowselect[0].filename); body.find(".filename").val(rowselect[0].filename); //通過class名進(jìn)行獲取數(shù)據(jù) body.find(".filepath").val(rowselect[0].path);//意思是將rowselect[0].path這個值傳遞到子窗口的class="filepath"這個的文本框中,(預(yù)先加載) //body.find(".menuid").val(rowselect[0].previousid); layui.form.render(); }, yes: function (index, layero) { //按了彈出層的確定按鈕時,這是將在父窗口中獲取子窗口form標(biāo)簽里的所有值,并根據(jù)name名和值形成鍵值對json對象 //console.log(layero); ////layer.alert('來到這里了'+index); let body = layer.getChildFrame("body", index); let data = {}; body.find("#changefileform").serializeArray().forEach(function (item) { //獲取彈出層寫下的數(shù)據(jù),input,下拉框啊,之類的表單元素(即changefileform下的所有數(shù)據(jù)) data[item.name] = item.value; //根據(jù)表單元素的name屬性來獲取數(shù)據(jù) }); data["fileid"] = rowselect[0].fileid; //if (data["previousid"] == "" || data["previousid"] == null) // data["previousid"] = rowselect[0].previousid; console.log(data); $.post('/api/dofile', data, function (result) { if (result == "success") { layer.alert("修改文件屬性成功"); } setTimeout(function () { layer.close(index); parent.location.reload(); }, 600); }); layer.close(index); resetSearch(); } }); }
點擊按鈕后,提前加載
然后是html界面,script里面是用來下拉框加載數(shù)據(jù)庫數(shù)據(jù)的,可以刪掉
2、然后再這個彈出層填寫數(shù)據(jù),按了確定后就開始加載這個js啦,這個獲取數(shù)據(jù)是通過name屬性來獲取的,上面 那個的話是通過class名稱來獲取的
然后controller獲取從js傳來的數(shù)據(jù)的話,看我另外的博客
下拉框動態(tài)獲取數(shù)據(jù)庫數(shù)據(jù)
下拉框可以搜索
看我其他博客
3、通過session傳值
設(shè)置session
sessionStorage.setItem('roleid', 'hello');
取session
var ss=sessionStorage.getItem('roleid');
刪除session中保存指定的值
sessionStorage.removeItem('roleid');
刪除全部
sessionStorage.clear();
4、通過調(diào)用父窗口的函數(shù)從而獲取到父窗口的值, 這個適合獲取少量值, 父窗口的js:
(1)(這個是獲取bootstraptable的選定值)menuTable是表格的id,這樣返回的值是jSON值來的
function getrowselect() { return $.map($('#menuTable').bootstrapTable('getSelections'), function (row) { return row//返回數(shù)據(jù)行 }); }
(2)如果是普通的text文本框(父窗口的js)
function getrowselect() { return $.map($('#text').val(), function (row) { return row//返回數(shù)據(jù)行 });}
(3)也可以直接在子窗口的js
window.parent.getElementById("text").val();
如果是(1)(2)種的話子窗口js這樣調(diào)用(這個是接(1)(2)的啊別搞錯了):
var rowselect = window.parent.getrowselect(); console.log(rowselect);//這里可以打印一下獲取到值沒有
5、假如是子窗口傳值給父窗口
父窗口js:
function getrowselect(userdata) { console.log(userdata); document.getElementById(userdata.inputid).value = userdata.uname; var dffff = "id" + userdata.inputid; document.getElementById(dffff).value=userdata.uid; return; }
子窗口:
//data=""; //data={"ss"="hello","gg"="world"} window.parent.getrowselect(data);
6、假如子彈窗窗口想要比父窗口大的話,需要用到top.layer.open或者parent.layer.open
這時通過
var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe頁的窗口對象,執(zhí)行iframe頁的方法:iframeWin.method();
感謝各位的閱讀!關(guān)于layui彈出層怎么傳值就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!