使用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>

效果如下:

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

由于其中\’性别\’是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信息页面的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容