JavaScript

超轻量级php框架startmvc

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

更新时间:2020-09-16 04:24:01 作者:startmvc
用户信息展示页面为A页面,编辑页面为B页面。A是B的父页面首先在A页面添加按钮,点击触

用户信息展示页面为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信息页面的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

layer 弹窗 User