zoukankan      html  css  js  c++  java
  • layui表单提交

    一、layui.form事件监听

    语法:form.on('event(过滤器值)', callback);

    form模块在 layui 事件机制中注册了专属事件,所以当你使用layui.onevent()自定义模块事件时,请勿占用form名。form支持的事件如下:

    event描述
    select 监听select下拉选择事件
    checkbox 监听checkbox复选框勾选事件
    switch 监听checkbox复选框开关事件
    radio 监听radio单选框事件
    submit 监听表单提交事件

    具体详解:http://www.layui.com/doc/modules/form.html

    在项目中暂时用到的为监听submit提交

    基本用法细节如下:

    按钮点击或者表单被执行提交时触发,其中回调函数只有在验证全部通过后才会进入,回调返回三个成员:

    form.on('submit(*)', function(data){
      console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象
      console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回
      console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
      return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
    });

    再次温馨提示:上述的submit(*)中的 * 号为事件过滤器的值,是在你绑定执行提交的元素时设定的,如:

    <button lay-submit lay-filter="*">提交</button>     

    你可以把*号换成任意的值,如:lay-filter="go",但监听事件时也要改成 form.on('submit(go)', callback);

    此处还需要注意:

    console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}

    二、实践

    别人的简单实践(重在思路)

    0、要使用layui的模块时,需先加载所需模块

    layui.use(['form'], function(){
        var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
        var $ = layui.$;
    
        //但是,如果你的HTML是动态生成的,自动渲染就会失效
        //因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
        //form.render();
    });

    1、在使用layui的submit 异步提交监听时,一定要在最后加return false

    //提交
        form.on('submit(submitButton)',function (data) {
            var maintenancePlace = JSON.stringify(data.field);
            $.ajax({
                url : '../../baseManage/place/create.action',
                type : 'post',
                dataType : 'json',
                contentType :"application/json",
                data : maintenancePlace,
                success : function (data1) {
                    alert(11111111)
                }
            })
            return false;
        })

    3、再次温馨提示:上述的submit(*)中的 * 号为事件过滤器的值,是在你绑定执行提交的元素时设定的,如:

    <button lay-submit lay-filter="submitButton">提交</button>
    三、自己的实践 
    前端代码输入form框:
    <form class="layui-form " action="">
        <div class="layui-form-item">
            <label class="layui-form-label">用户名:</label>
            <div class="layui-input-inline">
                <input type="text" name="username" placeholder="请输入用户名" class="layui-input">
            </div>
            <label class="layui-form-label">手机号:</label>
            <div class="layui-input-inline">
                <input type="text" name="mobile" placeholder="请输入手机号" class="layui-input">
            </div>
            <div class="layui-input-inline">
                <button class="layui-btn search-btn" table-id="userTable" lay-submit="" lay-filter="search"><i class="fa fa-search">&nbsp;</i>查询
                </button>
                <button type="reset" class="layui-btn layui-btn-primary"><i class="fa fa-refresh">&nbsp;</i>重置</button>
            </div>
        </div>
    </form>
    前端table展示:
    <div class="layui-form ">
        <table class="layui-table" id="userTable" cyType="pageGrid"
               cyProps="url:'/sys/user/list',checkbox:'true',pageColor:'#2991d9'">
            <thead>
            <tr>
                <!--复选框-->
                <th width="1%" param="{type:'checkbox'}">
                    <input type="checkbox" lay-skin="primary" lay-filter="allChoose">
                </th>
                <!--isPrimary:是否是主键-->
                <th width="10%" param="{name:'userId',isPrimary:'true',hide:'true'}">用户ID</th>
                <th width="8%" param="{name:'username',sort:'true'}">用户名</th>
                <th width="8%" param="{name:'nickname'}">姓名</th>
                <th width="8%" param="{name:'roleId'}">所属角色</th>
                <th width="8%" param="{name:'orgId'}">所属部门</th>
                <th width="8%" param="{name:'email'}">邮箱</th>
                <th width="6%" param="{name:'mobile'}">手机号</th>
                <th width="12%" param="{name:'createTime',sort:'true'}">创建时间</th>
                <th width="5%" param="{name:'status',render:'Render.customState'}">状态</th>
            </tr>
            </thead>
        </table>
    </div>
    Layui中js主方法代码:
          searchForm: function () {
                layui.use(['form'], function () {
                    var form = layui.form();
                    //监听提交
                    form.on('submit(search)', function (data) {
                        //获取对应的表格对象
                        var table_id = $(this).attr("table-id");// table_id=userTable
                        var _table = $("#" + table_id);         // 是id
                        //获取表格参数
                        var props = _table.attr("cyProps");     // cyProps="url:'/sys/user/list',checkbox:'true',pageColor:'#2991d9'"
                        if (!props) {
                            return
                        }
                        props = props ? props : "";
                        //将表格参数转为json
                        props = eval("({" + props + "})");
                        var conditions = data.field;
                        $.extend(defaultParam, conditions);     // conditions 合并到defaultParam 中 
                        var R = PageGrid.getData(props.url);    //*获取数据props.url='/sys/user/list'
                        alert("defaultParam=" + defaultParam.username);//defaultParam是对象
                        defaultParam.init=true;
                        PageGrid.setPage(R, _table, props.url); //设置分页
                        return false;
                    });
    
                });
            },
    getData方法:
            getData: function (url) {
                var data;
                $.ajax({
                    url: url,
                    async: false,
                    data: defaultParam,
                    dataType: "json",
                    success: function (R) {
                        if (R.code == 0) {
                            data = R;
                        } else {
                            data = {page: null};
                            alert(R.msg);
                        }
                    }
                });
                return data;
            },

    设置setPage分页

    
    
     setPage: function (R, $grid, url) {
    
                var pageId = $grid.attr("id") + "_page";
                $("#" + pageId).remove();
                //创建分页div
                $grid.after('<div id="' + pageId + '"></div>');
                layui.use(['laypage', 'layer'], function () {
                    var laypage = layui.laypage;
                    laypage.render({
                        elem: pageId
                        , count: R.page ? R.page.totalCount : 0
                        , layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
                        , jump: function (obj) {
                            var index=Loading.open(1,false);
                            PageGrid.toPage(R,obj, $grid, url);
                            Loading.close(index);
                        }
                    });
                });
    
            },
    
    

    效果:





  • 相关阅读:
    查看dll定义的宏
    循环调用dll库的界面时,首次正常,再次无响应
    strftime使用%F格式化日期失败
    自己程序生成的二维码部分手机无法识别
    Drools规则
    idea快捷键
    风控文档笔记
    工作笔记
    工具方法
    BIO,NIO,AIO
  • 原文地址:https://www.cnblogs.com/xiaonantianmen/p/9224370.html
Copyright © 2011-2022 走看看