layui监听表单提交出现的坑-layedit

问题描述

前端使用了layui框架,我现在需要在前端提交一个表单到后端保存,正常保存没有问题,现在我添加进来了layedit,使用layedit渲染了textarea,我现在想使用了form监听submit功能,然后手动发起ajax请求完成前后端分离,就在此时发生了bug,bug代码段如下:

form.on('submit(submitBtn)', function(data){
            var con = layedit.getContent(index)
            $('#LAY_demo1').val(con);
            if (con===""){
                layer.msg("文章不能为空!")
                return false;
            }
            $.ajax({
                url:"/admin/article/save",
                type:"post",
                contentType:"application/json;charset=utf-8",
                data:JSON.stringify(data.field),
                success:function (res) {

                }
            })
            return false;
        });

看上去没有错,但是就是因为textarea不能自动获取layedit中的值,需要手动传入,然后就引发了bug,每次提交获取到的都是上一次的值???
思考了很久认为赋值过程中是不是有异步操作引起了延迟,但是看几遍都认为没有异步,非常奇怪,于是尝试了layui自带的传值到textarea(layedit.sync(index)),效果不出所料,一样bug
在分析了很久之后判断出了问题,监听接收的data参数不能实时更新导致获取的永远都是上一次的,不出所料,换成了form.val(‘ArticleForm’)的形式来获取form表单,bug消失,代码如下:

form.on('submit(submitBtn)', function(data){
            var con = layedit.getContent(index)
            $('#LAY_demo1').val(con);
            if (con===""){
                layer.msg("文章不能为空!")
                return false;
            }
            $.ajax({
                url:"/admin/article/save",
                type:"post",
                contentType:"application/json;charset=utf-8",
                data:JSON.stringify(form.val("ArticleForm")),  //此处传值不能通过data获取,否则永远都是赋值之前的,即
                success:function (res) {

                }
            })
            return false;
        });

总结:监听事件携带的数据,如果修改不能自动获取最新的,是旧的数据,不同于拿地址,而是类似拿的静态数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值