百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

layui中弹出层的保存按钮绑定为iframe中表单的按钮

myzbx 2025-03-12 18:31 11 浏览

弹出层提交表单的js


layer.open({
	type : 2,
	title : '添加权限',
	area : [ '500px', '450px' ],
	offset : '160px',
	shadeClose : true, // 点击遮罩关闭
	btn : ['保存','取消'],
	content : 'permission_add.html',
	success : function(layero, index) { // 成功弹出后回调
		
	},
	yes : function(index, layero) { // 保存按钮回调函数
	    // 获取iframe层的body
	    var body = layer.getChildFrame('body', index);
	    // 找到隐藏的提交按钮模拟点击提交
	    body.find('#permissionSubmit').click();
	},
	btn2 : function(index, layero) { // 取消按钮回调函数
		layer.close(index); // 关闭弹出层
	}
});
	

弹出层表单中隐藏的提交按钮代码

iframe页面js内容


<script>
  // 初始化表单
  layui.use([  'form',  'layer'  ], function() {
    var  form = layui.form, layer = layui.layer,  $ =  layui.$;
    // 更新页面渲染,否则会造成页面加载元素不完整
     form.render();
    // 自定义表单验证
    form.verify({
      name : function(value, item) { // 验证功能名
        var  defaultName  = $('#defaultName').val(); // 默认的name
        if (value !== defaultName || 'default' === defaultName)  { // 判断功能名字是否发生改变
          if (!new RegExp("^[a-zA-Z0-9|\u4e00-\u9fa5\]{2,10}$")
              .test(value)) {
            return '权限名必须是2-10位中英文或者数字的字符';
          } else {
            code = 0; // 用来判断功能名是否存在
            $.ajax({
              type : 'POST',
              url  : 'queryNameIsExist.do',
              data : {
                name : value
              },
              async :  false,
              dataType : 'json',
              success  : function(data) {
                if (!data.success) { //  功能名已经存在
                  code = 1;
                }
              },
              error :  function(data) {
                code = 2;
              }
            });
            // 根据code判断角色名是否存在
            if (code ==  1) {
              return '功能名已经存在,请更换';
            } else if (code  == 2) {
              return '出现异常,请联系管理员';
            }
          }
        }
      },
      url  : function(value, item)  { // 校验功能url
        var  defaultUrl = $('#defaultUrl').val(); //  默认的url
        if (value !== defaultUrl ||  'default' === defaultUrl) {  // 判断功能url是否发生改变
          if (!new RegExp("^[a-zA-Z0-9/]{5,30}$").test(value)) {
            return 'url必须是5-30位英文和/组成的字符串';
          } else {
            code = 0; // 用来判断功能url是否存在
            $.ajax({
              type : 'POST',
              url  : 'queryUrlIsExist.do',
              data : {
                name : value
              },
              async :  false,
              dataType : 'json',
              success  : function(data) {
                if (!data.success) { //  功能url已经存在
                  code = 1;
                }
              },
              error :  function(data) {
                code = 2;
              }
            });
            // 根据code判断功能url是否存在
            if (code ==  1) {
              return '功能url已经存在';
            } else if (code  == 2) {
              return '出现异常,请联系管理员';
            }
          }
        }
      },
      permission : function(value, item) { //  校验权限字符串
        var  defaultPermission =  $('#defaultPermission').val(); // 默认的权限字符串
        if (value !== defaultPermission
            || 'default' !== defaultPermission)  { // 判断功能权限字符串是否发生改变
          if (!new RegExp("^[a-zA-Z0-9]{2,20}$").test(value))  {
            return '权限字符串必须是2-20位英文字符';
          } else {
            code = 0; // 用来判断功能权限字符串是否存在
            $.ajax({
              type : 'POST',
              url  : 'queryPermissionIsExist.do',
              data : {
                name : value
              },
              async :  false,
              dataType : 'json',
              success  : function(data) {
                if (!data.success) { //  功能权限字符串已经存在
                  code = 1;
                }
              },
              error :  function(data) {
                code = 2;
              }
            });
            // 根据code判断功能权限字符串是否存在
            if (code ==  1) {
              return '功能权限字符串已经存在';
            } else if (code  == 2) {
              return '出现异常,请联系管理员';
            }
          }
        }
      }
    });
 
    // 监听form表单提交
    form.on('submit(save)',  function(data) {
      $.ajax({
        type : 'POST',
        url  : 'createResource.do',
        data : {
          name : $('#name').val(),
          url  : $('#url').val(),
          type : $('input[name]:checked').val(),
          parentId : $('#parentId').val(),
          permission : $('#permission').val(),
          available :  $('#available').is(':checked') === true  ? 1  : 0
        },
        dataType : 'json',
        success  : function(data) {
          // 成功提示框
          parent.layer.msg('添加成功', {
            icon : 6,
          });
          parent.layer.closeAll('iframe'); //关闭弹框
        },
        error :  function(data) {
          // 异常提示
          parent.layer.msg('出现网络故障', {
            icon : 5
          });
          parent.layer.closeAll('iframe'); //关闭弹框
        }
      });
      return false;
    });
  });
</script>

我们只需要在保存按钮的回调函数中获取到iframe页面的隐藏的提交按钮然后使用click()事件就可以提交弹出iframe层的表单了,表单验证和表单提交都在iframe页面的js中,iframe页面的js中需要注意的是弹窗操作需要操作父页面的layer来进行

相关推荐

炫酷的计时器效果Canvas绘图与动画

-----------------------------------------华丽的分割线-----------------------------------------------------...

康托尔集合的绘制及其Python绘制(康托尔集合论的概括原则是什么)

康托尔三分集(Cantorternaryset)是数学中一个著名的分形例子,由德国数学家格奥尔格·康托尔在1883年引入。它通过不断去掉线段的中间三分之一部分,重复这个过程得到的一个分形集合。康托...

一文带你搞懂JS实现压缩图片(js 压缩图片)

作者:wuwhs转发链接:https://segmentfault.com/a/1190000023486410前言公司的移动端业务需要在用户上传图片是由前端压缩图片大小,再上传到服务器,这样可以减...

数据可视化—Echarts图表应用(数据可视化图表类型)

ECharts是一款由百度前端技术部开发的,基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。使用JavaScript实现开源的可视化库,可以流畅的...

ThreeJS中三维世界坐标转换成二维屏幕坐标

Threejs全称是“Javascript3Dlibrary”。WebGL则是openGL在浏览器上的一个实现。Threejs对WebGL进行了封装,让前端开发人员在不需要掌握很多数学知识和绘图知...

鸿蒙开源第三方件组件——加载动画库

前言基于安卓平台的加载动画库AVLoadingIndicatorView(https://github.com/81813780/AVLoadingIndicatorView),实现了鸿蒙化迁移和重构...

canvas实现下雪背景图(canvas绘制背景图)

canvas下雪背景html+css+js实现:1.定义标签:<h1>北极光之夜。</h1><divclass="bg"></...

用canvas画简单的“我的世界”人物头像

前言:花了4天半终于看完了《HeadFirstHTML5》,这本书的学习给我最大的感受就是,自己知识的浅薄,还有非常多非常棒的技术在等着我呢。[熊本表情]扶朕起来,朕还能学!H5新增标签里面最喜欢...

Manim-基础图形之点(什么叫图形基点)

制作数学演示视频时需要用到各类的集合图形,manim中内置了一些列的图形,本篇就从最简单的点讲起。点作为manim中最简单图形,也是其他所有图形的基,所有图形的绘制都是靠点来定位。manim中的点主...

一起学 WebGL:坐标系(坐标系格式)

大家好,我是前端西瓜哥,今天我们来学习WebGL。WebGL的世界坐标系是三维的。默认使用笛卡尔坐标系的右手坐标系,满足右手定则,即x轴向右,y轴向上,z轴向着观察者,原点位于画布中心。然...

漫画 欣赏 - 聖鬥士星矢 THE.LOST.CANVAS 冥王神話 24

《圣斗士星矢THELOSTCANVAS冥王神话》改编自车田正美原作的漫画《圣斗士星矢》,由车田正美原作、手代木史织作画。其外传《圣斗士星矢THELOSTCANVAS冥王神话外传》则在《...

漫画 欣赏 - 聖鬥士星矢 THE.LOST.CANVAS 冥王神話 25 - 完结篇

《圣斗士星矢THELOSTCANVAS冥王神话》改编自车田正美原作的漫画《圣斗士星矢》,由车田正美原作、手代木史织作画。其外传《圣斗士星矢THELOSTCANVAS冥王神话外传》则在《...

Eric Fischl 名画录(eric tucker画家)

艾瑞克费舍尔(EricFischl,1948——),是美国新表现主义画家,当代国际画坛一位十分活跃的人物,在国际上享有很高的知名度。作为20世纪美国第6次经济衰退时期本土第一个伟大画家艾瑞克·费舍尔...

canvas绘画板的实现(canvas画布)

新项目有一个需求:客户需要在订单确认的时候签名。第一反应就是用html的canvas实现,同事一起商量了下,canvas有三个制约:canvas必须要用鼠标,签名会很难看;手机端webapp怎么实现...

Python程序开发之简单小程序实例(9)利用Canvas绘制图形和文字

Python程序开发之简单小程序实例(9)利用Canvas绘制图形和文字一、项目功能利用Tkinter组件中的Canvas绘制图形和文字。二、项目分析要在窗体中绘制图形和文字,需先导入Tkinter组...