Popup弹出框添加数据实现方法


Posted in Javascript onOctober 27, 2017

本文实例为大家分享了Popup弹出框添加数据的具体代码,供大家参考,具体内容如下

逻辑

窗口P1中显示一组数据,并提供一个添加按钮
点击按钮,弹出新的浏览器窗口P2,在其中添加一条数据并提交后,窗口P2自动关闭
新添加数据动态添加到窗口P1中并被选中
所需知识:JS BOM 窗口对象;JS自执行函数

实现

下面在Django中简单实现下,因为比较简单,路由和视图就写在一起了。

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('执行数据保存操作...')
  return render(request, 'popup.html',{'city':city})

urlpatterns = [
 url(r'^p1.html/', p1),
 url(r'^p2.html/', p2),
]

2.访问视图p1,返回页面p1.html:

<head>
 <meta charset="UTF-8">
 <title>p1页面</title>
</head>

<body>
<h2>p1页面</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, 窗口参数),注意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>

说明:

1、点击添加按钮,执行popupFunc:访问'/p2.html/',并在新窗口中打开页面p2.html
2、定义回调函数callback:它接收一个参数city,将其动态添加到下拉选项中并设置为选中状态。

3.弹出窗口中显示p2.html如下:

<head>
 <meta charset="UTF-8">
 <title>p2页面</title>
</head>
<body>
<h2>p2页面</h2>

<form method="post">
 {% csrf_token %}
 <input type="text" name="city">
 <input type="submit" value="提交">
</form>
</body>

说明:这里没有指定form表单的action=url参数,用户输入数据后,默认提交到当前地址,即'/p2.html/',提交到视图p2

4.视图p2收到提交的数据后,传入模板并返回页面popup.html:

<head>
 <meta charset="UTF-8">
 <title>正在返回</title>
</head>
<body>
<script>

 (function (city) {
  window.opener.callback(city);
  window.close();
 })("{{ city }}")

</script>
</body>

说明:

  • 这里定义了JS自执行函数:它调用打开弹出窗口的窗口中的回调函数(即P1中的callback),并把用户输入数据作为参数传入;关闭自身。
  • 如果p2视图返回错误信息,也可以在popup.html中作显示(略)。
  • 自执行函数可以参考 JavaScript 自执行函数和 jQuery扩展方法

效果图:

Popup弹出框添加数据实现方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JAVASCRIPT keycode总结
Feb 04 Javascript
JavaScript中数据结构与算法(四):串(BF)
Jun 19 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
Jun 26 Javascript
js实现的黑背景灰色二级导航菜单效果代码
Aug 24 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
Nov 04 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
Nov 19 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
Javascript中document.referrer隐藏来源的方法
Jan 16 Javascript
jQuery中DOM节点删除之empty与remove
Jan 20 Javascript
深入理解Vue 的条件渲染和列表渲染
Sep 01 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
Aug 10 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
Oct 09 Javascript
JavaScript模拟实现封装的三种方式及写法区别
Oct 27 #Javascript
使用vue的v-for生成table并给table加上序号的实例代码
Oct 27 #Javascript
javascript浏览器用户代理检测脚本实现方法
Oct 27 #Javascript
vue中的event bus非父子组件通信解析
Oct 27 #Javascript
基于javascript中的typeof和类型判断(详解)
Oct 27 #Javascript
webpack配置之后端渲染详解
Oct 26 #Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 #jQuery
You might like
php pki加密技术(openssl)详解
2013/07/01 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
Dom 是什么的详细说明
2010/10/25 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
对比分析json及XML
2014/11/28 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
制定岗位职责的原则
2013/11/08 职场文书
物流仓储计划书
2014/01/10 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
违纪检讨书
2015/01/27 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技