Popup彈出框添加數(shù)據(jù)實(shí)現(xiàn)方法
本文實(shí)例為大家分享了Popup彈出框添加數(shù)據(jù)的具體代碼,供大家參考,具體內(nèi)容如下
邏輯
窗口P1中顯示一組數(shù)據(jù),并提供一個(gè)添加按鈕
點(diǎn)擊按鈕,彈出新的瀏覽器窗口P2,在其中添加一條數(shù)據(jù)并提交后,窗口P2自動(dòng)關(guān)閉
新添加數(shù)據(jù)動(dòng)態(tài)添加到窗口P1中并被選中
所需知識(shí):JS BOM 窗口對(duì)象;JS自執(zhí)行函數(shù)
實(shí)現(xiàn)
下面在Django中簡(jiǎn)單實(shí)現(xiàn)下,因?yàn)楸容^簡(jiǎn)單,路由和視圖就寫在一起了。
1.路由和視圖部分
from django.conf.urls import url from django.shortcuts import render def p1(request): return render(request, 'p1.html') def p2(request): if request.method == 'GET': return render(request, 'p2.html') elif request.method == 'POST': city = request.POST.get('city') print('執(zhí)行數(shù)據(jù)保存操作...') return render(request, 'popup.html',{'city':city}) urlpatterns = [ url(r'^p1.html/', p1), url(r'^p2.html/', p2), ]
2.訪問(wèn)視圖p1,返回頁(yè)面p1.html:
<head> <meta charset="UTF-8"> <title>p1頁(yè)面</title> </head> <body> <h2>p1頁(yè)面</h2> <select id="cityChoose"> <option>上海</option> <option>北京</option> </select> <input type="button" value="添加" onclick="popupFunc();"/> <script> popupFunc = function () { window.open('/p2.html/', 'p2', "status=1, height:300, width:300, toolbar=0, resizeable=1") //open(url, name, 窗口參數(shù)),注意name不能重名 }; callback = function (city) { var opt = document.createElement('option'); opt.innerText = city; opt.setAttribute('selected', 'selected'); var selEle = document.getElementById('cityChoose'); selEle.appendChild(opt); } </script> </body>
說(shuō)明:
1、點(diǎn)擊添加按鈕,執(zhí)行popupFunc:訪問(wèn)'/p2.html/',并在新窗口中打開(kāi)頁(yè)面p2.html
2、定義回調(diào)函數(shù)callback:它接收一個(gè)參數(shù)city,將其動(dòng)態(tài)添加到下拉選項(xiàng)中并設(shè)置為選中狀態(tài)。
3.彈出窗口中顯示p2.html如下:
<head> <meta charset="UTF-8"> <title>p2頁(yè)面</title> </head> <body> <h2>p2頁(yè)面</h2> <form method="post"> {% csrf_token %} <input type="text" name="city"> <input type="submit" value="提交"> </form> </body>
說(shuō)明:這里沒(méi)有指定form表單的action=url參數(shù),用戶輸入數(shù)據(jù)后,默認(rèn)提交到當(dāng)前地址,即'/p2.html/',提交到視圖p2
4.視圖p2收到提交的數(shù)據(jù)后,傳入模板并返回頁(yè)面popup.html:
<head> <meta charset="UTF-8"> <title>正在返回</title> </head> <body> <script> (function (city) { window.opener.callback(city); window.close(); })("{{ city }}") </script> </body>
說(shuō)明:
- 這里定義了JS自執(zhí)行函數(shù):它調(diào)用打開(kāi)彈出窗口的窗口中的回調(diào)函數(shù)(即P1中的callback),并把用戶輸入數(shù)據(jù)作為參數(shù)傳入;關(guān)閉自身。
- 如果p2視圖返回錯(cuò)誤信息,也可以在popup.html中作顯示(略)。
- 自執(zhí)行函數(shù)可以參考 JavaScript 自執(zhí)行函數(shù)和 jQuery擴(kuò)展方法
效果圖:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于JavaScript實(shí)現(xiàn)百度搜索框效果
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)百度搜索框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07javascript下arguments,caller,callee,call,apply示例及理解
在看到大家如此關(guān)注JS里頭的這幾個(gè)對(duì)象,我試著把原文再修改一下,力求能再詳細(xì)的闡明個(gè)中意義2009-12-12(跨瀏覽器基礎(chǔ)事件/瀏覽器檢測(cè)/判斷瀏覽器)經(jīng)驗(yàn)代碼分享
一些js代碼,自己備用的,高手不要笑話我。(跨瀏覽器基礎(chǔ)事件,瀏覽器檢測(cè),判斷瀏覽器的名稱、版本號(hào)、操作系統(tǒng))等等,很實(shí)用的,方便自己使用,感興趣的朋友可以了解下,希望本文對(duì)你有所幫助2013-01-01Flexigrid在IE下不顯示數(shù)據(jù)的有效處理方法
Flexigrid在IE下不顯示數(shù)據(jù)的處理方法是:指定一下Ajax請(qǐng)求數(shù)據(jù)的方式為Get方式,遇到此問(wèn)題的朋友可以參考下2014-09-09漂亮的widgets,支持換膚和后期開(kāi)發(fā)新皮膚(2007-4-27已更新1.7alpha)
漂亮的widgets,支持換膚和后期開(kāi)發(fā)新皮膚(2007-4-27已更新1.7alpha)...2007-04-04腳本分析、壓縮、混淆工具 JSA新版本發(fā)布,壓縮效率提高大約10%
腳本分析、壓縮、混淆工具 JSA新版本發(fā)布,壓縮效率提高大約10%...2007-05-05如何利用js根據(jù)坐標(biāo)判斷構(gòu)成單個(gè)多邊形是否合法
這篇文章主要給大家介紹了關(guān)于如何利用js根據(jù)坐標(biāo)判斷構(gòu)成單個(gè)多邊形是否合法的相關(guān)資料,文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01JavaScript通過(guò)字符串調(diào)用函數(shù)的實(shí)現(xiàn)方法
這篇文章主要介紹了JavaScript通過(guò)字符串調(diào)用函數(shù)的實(shí)現(xiàn)方法,實(shí)例分析了javascript動(dòng)態(tài)調(diào)用函數(shù)的技巧,需要的朋友可以參考下2015-03-03