关闭

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

标签: layer
2143人阅读 评论(0) 收藏 举报
分类:

用户信息展示页面为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);
        }
    }); 
}
1
0
查看评论

layer的弹出层的简单的例子

如果不了级的基本的清楚官网查看api网址为http://layer.layui.com/我用的是iframe/!* 如果是iframe层 */ layer.open({ type: 2, content: 'http://sentsin.com' //这里content...
  • two_people
  • two_people
  • 2016-08-08 15:25
  • 28604

浅谈layer.open的弹出层中的富文本编辑器为何不起作用!

很多童鞋都喜欢用贤心的layui框架。是的,我也喜欢用,方便,简单。但是呢,有时候项目中的需求会不一样,导致我们用的时候,显示效果可能会不一样,好吧。这样的话,个别遇到的问题总是解决不好,但是呢还是那句话,多研究一下,就都会有解决方法的。最近做的项目需求就是富文本编辑器要在弹出框中显示,好吧。本来以...
  • sxs161028
  • sxs161028
  • 2017-07-05 10:11
  • 1601

layer 实现弹窗提交信息

layer是非常好用的弹窗插件,具体参见官方文档 点击这里进入。官方有很多示例,使用方法也非常简单,引入官方下载的css和js就可以了。但是有时候,弹窗提醒并不能满足我们的所有要求。例如,在奖品界面,希望点击“编辑奖品”的时候,能弹出对话框让我们来填写信息,如下图所示:如何用简洁美观的 layer...
  • antony9118
  • antony9118
  • 2016-12-11 21:17
  • 4970

谈谈layer弹窗自定义样式,防止样式冲突问题(实习第七天)

如果在一个页面中存在两个以上的layer弹窗,那么当我们修改其中一个弹窗的默认样式的话,其他的弹窗就会受到影响,今天就来谈谈怎么样去避免样式冲突。layer自定义弹窗样式问题情境:  在一个全局页面中存在多个layer.open({});layer.open({ ...
  • DOCALLEN
  • DOCALLEN
  • 2016-12-13 21:01
  • 5535

layui弹窗父子窗口之间传参数的方法

1、父页面打开子页面并向子页面传参数  function setChooseValues(ret){ var oView = document.getElementById("userName"); var oValue =...
  • babyxue
  • babyxue
  • 2017-08-07 17:32
  • 4435

layer实现删除确认及操作完成后弹出提醒,然后刷新本页面

layer.confirm("确认要删除吗,删除后不能恢复", { title: "删除确认" }, function (index) { layer.close(index); $.post(&...
  • sxf359
  • sxf359
  • 2017-07-17 14:57
  • 6815

layui 表单验证案例

文本框,手机,邮箱,textarea等格式的验证     HTML代码: 反馈主题
  • haibo0668
  • haibo0668
  • 2016-10-26 11:49
  • 37658

bootstrap col-xs-offset无效解决方案

使用 col-xs-offset-1 col-sm-offset-0可以在小屏幕上实现偏移并且不会影响到更大的屏幕
  • nihaoliyibing
  • nihaoliyibing
  • 2015-01-13 10:48
  • 3702

layui 表单页面代码

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" ...
  • huangbaokang
  • huangbaokang
  • 2017-10-19 09:19
  • 472

layerui弹框实例

可参考layerui官网实例,这里我将一个实例单独摘出来进行测试 1.showBox.jsp页面代码: <% String path = request.getContextPath(); String basePath = request.getScheme()+"://&q...
  • u012255097
  • u012255097
  • 2017-08-03 11:17
  • 496
    文章分类
    最新评论