使用layer弹窗,制作编辑User信息页面的方法

用户信息展示页面为A页面,编辑页面为B页面。A是B的父页面

首先在A页面添加按钮,点击触发函数,函数初始化layer弹窗

‘编辑'按钮:

<button type="button" class="btn btn-primary btn-xs" id="edit{{item.id}}"
     onclick="editSingle('{{$index}}')">修改</button>

执行函数:

var userContent//作为全局变量,之后给B页面直接调用,后面会提到
function editSingle(index){
 userContent = vm.content[index]
 layer.open({
  type: 2,
  title: '编辑',
  area : ['800px' , '520px'],
  scrollbar: false,//禁止浏览器滚动
  content: 'bUser/editSingle'
  });
}

B页面初始化时从A页面取值,用parent.xxx

var iframe = parent.layer.getFrameIndex(window.name); //获取窗口索引,这里的B页面所在窗口的索引值为1
 var vm = new Vue({
  el:'#editUser',
  data:{
   contents:parent.userContent,//从A页面取值
   titles:['手机','密码','用户名','性别','邮箱','地区','个性签名','头像']
  }
 });

使用Vue动态生成html语句

<form class="form-horizontal" id="editUser" action="<%=basePath%>/BSMSys/bUser/save" method="post">
 <div class="form-group" v-for="(key,value) in contents" >
  <div v-if="$index==0">
   <div hidden>
    <input v-else type="text" class="form-control" id="{{key}}" name="{{key}}" placeholder="{{value}}" value="{{value}}">
   </div>
  </div>
  <div v-if="$index!=0">
   <label for="{{key}}" class="col-xs-2 control-label">{{titles[$index-1]}}</label>
   <div class="col-xs-9" >
    <div v-if="$index==4 || value=='MAN'" class="fixradio">
     <input type="radio" name="{{key}}" id="{{key}}" value="MAN"/> 男
     <input type="radio" name="{{key}}" id="{{key}}" value="WOMEN"/> 女
    </div>
    <input v-else type="text" class="form-control" id="{{key}}" name="{{key}}" placeholder="{{value}}" value="{{value}}">
   </div>
  </div>
 </div>

 <div class="form-group">
  <div class="col-xs-offset-5 col-xs-1">
   <button class="btn btn-primary" id="save">保存</button>
  </div>
  <div class="col-xs-1">
   <button class="btn btn-default" id="restore">还原</button>
  </div>
 </div>
</form>

效果如下:

由于其中'性别'是radio单选框,所以需要判断

//判断性别,并选中对应的radio
  if(vm.contents.sex!=''){
   if(vm.contents.sex=='MAN') $("#sex:eq(0)").click();
   else $("#sex:eq(1)").click();
  }

还原按钮,即刷新页面:

$("#restore").click(function(){
   window.location.reload();
  })

保存按钮:

$("#save").click(function(){
   $("#editUser").submit();
   parent.location.reload();
   //parent.layer.close(iframe);//如果执行这一步,会导致submit无法提交到服务器,这里用刷新页面使弹窗关闭
  })

在后台将form数据保存进数据库即可

后续优化:

将B页面form表单的submit提交改为ajax提交,

function save(){
  $.ajax({
   type:"post",
   url:"<%=basePath%>/BSMSys/bUser/save",
   data: $("#editUser").serialize(),//序列化表单数据
   complete: function() {
    parent.layer.close(iframe);//关闭弹窗
   }
  });
 }
$('#save').on('click', function(){
   save();
  });

将A页面的layer弹窗添加end函数回调,使弹窗关闭后刷新页面:

function jumpToPage(page){
 $.get("<%=basePath%>/BSMSys/bUser/showUser?pageNum="+page, function(data) {
  vm.content=data.content;//赋值给vue
  currPage = data.number+1;
  $('#pager').bootstrapPaginator("show",currPage );//初始化分页插件
 });
 $("#pageInputGroup").attr("class","input-group");
 $("#pageInput").attr("placeholder",function(index,value){
  $(this).val("");
  return "第"+options.currentPage+"页,共"+options.totalPages+"页";
 });
}
var userContent
function editSingle(index){
 userContent = vm.content[index]
 layer.open({
  type: 2,
  title: '编辑',
  area : ['800px' , '520px'],
  scrollbar: false,//禁止浏览器滚动
  content: '<%=basePath%>/BSMSys/bUser/editSingle',
  end:function(){
   jumpToPage(options.currentPage);
  }
 });
}

以上这篇使用layer弹窗,制作编辑User信息页面的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 使用layer弹窗和layui表单实现新增功能

    1.需求:使用layer在弹窗内完成新增,成功后提示并刷新页面(父页面,list页面) 2.实现 a* 页面效果图 b*页面代码 --构建from表单 <div id="add-main" style="display: none;"> <form class="layui-form" id="add-form" action=""> <div class="layu

  • 对Layer弹窗使用及返回数据接收的实例详解

    Layer做为弹窗,主页面代码: 注意1. callback()方法 返回字符串,再data:JSON.parse(res)转为ajax提交时的json参数 注意2. textarea 上使用append方法没有效果,改写: var str = $("#area").val() + "\n"+d; $("#area").val(str); //引入js 必须要有(1.8以上版本) jquery <script src="__PUB

  • 使用layer弹窗,制作编辑User信息页面的方法

    用户信息展示页面为A页面,编辑页面为B页面.A是B的父页面 首先在A页面添加按钮,点击触发函数,函数初始化layer弹窗 '编辑'按钮: <button type="button" class="btn btn-primary btn-xs" id="edit{{item.id}}" onclick="editSingle('{{$index}}')">修改</button> 执行函数: var use

  • Thinkphp5结合layer弹窗定制操作结果页面

    本文实例为大家分享了Thinkphp5结合layer弹窗定制页面的具体代码,供大家参考,具体内容如下 1 打开应用公共文件页面    appliction/common.php,编写以下代码 注意: 成功消息的绿色背景部分是iframe 框架写法,如果是普通页面.就吧parent去除,改为: self.location.href="'.$url.'" rel="external nofollow" rel="external nofollow"

  • 对django layer弹窗组件的使用详解

    父层: <div class="col-xs-12"> <div class="box"> <div class="box-header"> <h3 class="box-title">主机监控列表</h3> </div> <!-- /.box-header --> <div class="box-body" styl

  • php 提交表单 关闭layer弹窗iframe的实例讲解

    介绍一款非常好用的前端弹窗插件: layer 官网地址:http://layer.layui.com/ 根据官方的API:layer的iframe弹窗 //iframe层-父子操作 layer.open({ type: 2, area: ['700px', '530px'], fix: false, //不固定 maxmin: true, content: 'test/iframe.html' }); 这里以php开发为例 演示如何 提交表单后自动关闭layer弹窗 (1)弹出layer编辑框

  • layer弹窗插件操作方法详解

    本文实例讲述了layer弹窗插件操作方法.分享给大家供大家参考,具体如下: 1.首先去http://layer.layui.com/下载插件 2.在网站上有演示说明 3.操作方法如何 <script src="../js/layer/layer.js"></script> <script> function openadd() { $str=$("#addModal").html();//加载弹窗内容 layer.open({ t

  • 禁止弹窗中蒙层底部页面跟随滚动的几种方法

    场景概述 众所周知,弹窗是一种常见的交互方式,而蒙层是弹窗必不可少的元素,用于隔断页面与弹窗区块,暂时阻断页面的交互.但是,在蒙层元素中滑动的时候,滑到内容的尽头时,再继续滑动,蒙层底部的页面会开始滚动,显然这不是我们想要的效果,因此需要阻止这种行为. 那么,如何阻止呢?请看以下分析: 方案分析 方案一 打开蒙层时,给body添加样式: overflow: hidden; height: 100%; 在某些机型下,你可能还需要给根节点添加样式: overflow: hidden; 关闭蒙层时,移

  • 用javascript制作qq注册动态页面

    目录 一.前言 1. 基础布局 2. 自动切换图片 3. 添加内容 4. 自动缩放,控件的显示和隐藏 5.响应用户输入操作 一.前言 我们来看如何用html写一个注册页面并使用js加载用户输入响应.先上图,没图都是耍流氓,附上本次案例链接Fdog注册案例. 1. 基础布局 首先分析布局,图中的布局分为左右两大板块,右边的板块又包括三大板块: 我们先来一个水平布局,并设置左边的宽为25%,右边的宽为75% <div class="fdogback"></div>

  • 使用Three.js制作一个3D奖牌页面

    目录 背景 效果 实现 引入资源 场景初始化 光照效果 Three.js 提供的光源 添加网格和地面 创建奖牌 奖牌UI素材生成 Three.js 中的贴图 MeshPhysicalMaterial 物理材质 特殊属性 加载1000+文字模型 补间动画 动画更新 礼花动画 总结 背景 本文使用 React + Three.js 技术栈,实现粉丝突破1000的3D纪念页面,包含的主要知识点包括:Three.js 提供的光源.DirectionLight 平行光.HemisphereLight 半球

随机推荐