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

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

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

弹出层提交表单的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来进行

相关推荐

男人的内裤,到底可以穿多久?(男人内裤最多能穿几天)

女生们如果家里有男生可能会发现——他们对内裤很恋旧穿到褪色松垮穿到别有洞天穿到一网情深穿到人间蒸发都仍然...舍不得这位老伙计男生们到底有多热爱旧内裤?有外国媒体曾在街头采访,发现:女士们往往会随...

typeof 与 instanceof 区别(typeof与instanceof区别)

typeof操作符返回一个字符串,表示未经计算的操作数的类型使用方法如下:typeofoperandtypeof(operand)operand表示对象或原始值的表达式,其类型将被返回举个例子...

年纪轻轻病情就已是晚期!你还敢再喝这种饮料吗?

本文作者:谢祥成,浙江大学医学院附属邵逸夫医院肾内科主任医师吴俊男,浙江大学医学院附属邵逸夫医院肾内科主治医师30岁的金先生(化名)是一名才华横溢的设计师。半年前出现视物模糊,起初以为是用眼过度,没有...

typeof 与 instanceof 有什么区别

typeof和instanceof是JavaScript中用于类型检查的两个操作符,但它们的用途和适用场景有显著区别。以下是它们的区别及使用注意事项:1.typeof作用:返回一个变量的基本...

数据结构之顺序表(数据结构顺序表图书管理系统)

线性表定义线性表是n(n≥0)个具有相同特性的数据元素的有限序列。记作:(a1,a2,…,ai-1,ai,ai+1,…,an)线性表相关概念直接前驱元素:ai-1领先于ai,称a...

每一个成熟的人,都需要具备「翻篇」这种能力

“翻篇儿”——仿佛读出这个儿化音,才够表达那种潇洒的感觉是一种人生中非常重要的心理过程和心理技能。人生注定不完美,我们只要活着就会遭遇不愉快的经历,只有及时翻篇儿,才能把更多注意力放在当下,不被过去的...

打通 JAVA 与内核系列之 一 ReentrantLock 锁的实现原理

写JAVA代码的同学都知道,JAVA里的锁有两大类,一类是synchronized锁,一类是concurrent包里的锁(JUC锁)。其中synchronized锁是JAVA语言层面提供的能力,在此不...

韩国吃货主播,美食声控咀嚼音,你是搬运工,好吃到停不下来

刘姐畅谈。Hey,Hongsi。TodaywehaveassortedtoysthatImade。Foryouguysfirst。Itlookscrunchybecause...

黄子韬2019新歌最好的我们完整歌词介绍在哪可以听

最好的我们(TheBestofUs)-黄子韬词:黄子韬曲:黄子韬编曲:DarylK制作人:DarylK助理制作:郭舒文和音:黄子韬电吉他:CalvinC木吉他:雷十一录音室:Kong...

刷一道LeetCode -- 三数之和(三数之和算法)

原题:https://leetcode-cn.com/problems/3sum/给你一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a+b+c...

隐藏在阳光当中的地球刺客(隐藏在阳光下的秘密)

小行星什么时候会撞击地球?这一直是大家比较关注的问题,特别是当大家知道地球上前一任住户是亡于小行星之后,就更加关注这个问题了。图1尤卡坦半岛的陨石坑(NASA)实际上,地球每天都会遭受到一些天体的袭...

安卓手机爱奇艺app中离线视频导出

安卓手机爱奇艺app中离线视频导出:通常我在爱奇艺中发现好的视频,想保存下来,点击离线缓存,缓存好后,在手机上可以查看,但是使用手机连接电脑打开后,发现保存视频的文件夹是空的。1)在手机中爱奇艺文...

50款经典奥斯汀月季,超多图片,抗病好养新手必种的月季

【50款经典奥斯汀月季】大家好,今天来给大家介绍50款经典的奥斯汀月季,奥斯汀是一位伟大的育种家,以他命名的奥斯汀公司也繁育出了数量众多的月季品种。根据木木的种植经验,奥斯汀的月季大多植株长势良...

你也想像J姐一样在梦幻芭比大house里“哭泣”吗?

“6年前我的兜里只揣着400元美金,现如今我已经住上了这上亿豪宅”他是一个我行我素,敢说敢做的一个网红博主他测评过的彩妆都卖断货了他的自创同名品牌深受好评他就是JeffreeStar,你们传说中的J...

VB Do While\Until,Loop循环语句

DoWhile\Until…….Loop循环语句上一节讲了For……Next循环语句,这节讲DoWhile\Until…….Loop循环语句。有人会有疑问,既然有For循环,还要Do循环干什么?它...