zoukankan      html  css  js  c++  java
  • jQuery-laye插件实现 弹框编辑,异步验证,form验证提交


    代码中用到了 jQuery的ajax异步处理,each()循环,submit()页面验证提交form表单,prepend()追加标签,laye插件的弹框效果(如有其它弹框效果可参考官网:http://layer.layui.com/),
    以及input标签name命名的小技巧。
    有问题请在下方留言 代码如下:
    <body>
    <div class="wrap">
    <form method="post" class="form-horizontal js-ajax-form margin-top-20" id="form" action="{{url('admin/container/add')}}">
    <div class="form-group">
    <label for="input-user_login" class="col-sm-2 control-label">体验店编号</label>
    <div class="col-md-2 col-sm-10">
    //鼠标离开事件检测体验店代码是否已经存在,js中根据id
    <input type="text" class="form-control" pattern="[0-9]" value="" id="container_number" name="container_number">
    //消息提示框
    <div class="form-required" >
    <p id="check_warning"> </p>
    </div>
    </div>
    </div>
    <div class="form-group">
    <label class="col-sm-2 control-label">体验店状态</label>
    <div class="col-md-2 col-sm-10">
    <select class="form-control" name="status">
    <option value="1">使用中</option>
    <option value="2">维修中</option>
    <option value="3">废弃</option>
    </select>
    </div>
    </div>

    <div class="form-group">
    <label class="col-sm-2 control-label">商品信息</label>
    <div class="col-md-6 col-sm-10">
    <table class="table table-hover table-bordered">
    <thead>
    <tr>
    <th>条形码</th><th>商品名称</th><th>售价</th> <th>优先级</th><th>操作</th>
    </tr>
    </thead>
    <tbody id="add">
    <tr>
    <td>-</td><td>-</td><td>-</td><td>-</td>
    <td><a id='add_goods' onclick='add_goods()' ><i class='fa form-required fa-plus-circle normal'></i></a>
    </td>
    </tr>
    </tbody>
    </table>
    </div>
    </div>
    <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
    <a class="btn btn-default" href="#" onclick="add()">添加体验店</a>
    </div>
    </div>
    </form>
    </div>
    <script src="{{ asset('/static/themes/admin_simpleboot3/public/assets/js/jquery-1.10.2.min.js')}}"></script>
    <script type="text/javascript" src="{{ asset('/lib/layer/2.4/layer.js') }}"></script>
    <script>

    //鼠标离开事件 查询数据库是否存在
    $("#container_number").mouseleave(function(){
    //清空提示消息
    $('#check_warning').html('');
    //获取编号
    var number = $("#container_number").val();
    var url = "{{url('admin/container/checkNumber')}}";
    // 异步提交验证
    $.ajax({
    type:"post",
    url:url,
    data:{'container_number':number,_token:_token},
    dataType:"json",
    success:function(data){
    if(data == 2){
    //清空输入框原有编号
    $('#container_number').val('');
    var text = '编号:'+number+' 已存在';
    //追加新的信息
    $('#check_warning').html(text);
    }
    }
    })
    });

    //批量添加商品
    function add_goods(){
    //弹框html编辑
    var textdiv ="<div id='textdiv'>"+
    // 输入框
    "<textarea id = 'textarea' class = 'layui-layer-input' style='height: 100px; 307.75px;'>例:6666/0000/8888</textarea>"+
    // ajax请求返回信息展示
    "<p id='error_num' class='form-required'></p>"+
    "</div>";

    layer.open({
    type: 1,
    title: '输入商品条形码,多条请以 / 分割',
    content: textdiv
    ,btn: ['提交', '取消']
    ,yes: function(index, layero){
    //按钮【提交】的回调
    var num = $('#textarea').val();
    var reg = /^[0-9]+.?[0-9,/]*$/;
    //正则验证输入信息是否正确
    if (reg.exec(num)) {
    //提交输入信息并返回data数据
    var url = "{{url('admin/container/checkGoods')}}";
    $.ajax({
    type:"post",
    url:url,
    data:{'num':num,_token:_token},
    dataType:"json",
    success:function(data){
    //判断返回状态
    if(data.code== 1){
    $('#error_num').html('&nbsp;&nbsp;以上条形码不存在');
    }else if(data.code== 2){
    $('#error_num').html('&nbsp;&nbsp;条形码'+data['msg']+'不存在');
    }else if(data.code== 3){
    var aHtml = '' ;
    //循环返回数据,组装标签
    $.each(data.msg, function(i, item){
    var existence = $('#barcode_'+item.barcode).val();
    //判断商品条形码是否存在,如果不存在追加标签
    if(!existence){
    //组装form提交返回的商品数组信息
    // *注 html中可以根据input标签name的命名把表单数据组装成多维数组返回给后台。例如:name=goods[goods_id]['barcode']
    var goods1 = "goods["+item.goods_id+"]['barcode']";
    var goods2 = "goods["+item.goods_id+"]['goods_id']";
    var goods3 = "goods["+item.goods_id+"]['level']";
    //编辑追加内容
    aHtml+="<tr id=goods_"+item.barcode+">"+
    "<td> <input type='hidden' class='lzt' value="+item.barcode+" id=barcode_"+item.barcode+" name="+goods1+">"+
    "<input type='hidden' value="+item.goods_id+" name="+goods2+">"+item.barcode+"</td>"+
    "<td>"+item.goods_name+"</td>"+
    "<td>"+item.present_price+"</td>"+
    "<td><input type='text' style=' 30px;' value='' name="+goods3+"></td>"+
    "<td><a href='#' onclick='del_goods("+item.barcode+")' ><i class='fa fa-minus-circle normal'></i></a></td>"+
    "</tr>";
    }
    });
    //向add上方追加html标签,追加方式有很多可以参照相关jquery文档。
    $('#add').prepend(aHtml);
                  //关闭弹出对话框
    layer.close(index);
    }
    }
    })
    }else{
    $('#error_num').html('&nbsp;&nbsp;格式错误');
    }
    }
    ,btn2: function(index, layero){
    //按钮【取消】的回调
    //return false //开启该代码可禁止点击该按钮关闭
    }
    ,cancel: function(){
    //右上角关闭回调
    //return false 开启该代码可禁止点击该按钮关闭
    }
    });

    };

    //删除商品
    function del_goods(barcode){
    $('#goods_'+barcode).remove();
    }

    //体验店信息验证后提交
    function add(){
    var container_number = $('#container_number').val();
    if(!container_number){
    layer.msg('请填写体验店编码');
    return false;
    }

    var barcode = $('.lzt').val();
    if(!barcode){
    layer.msg('请添加体验店商品');
    return false;
    }
    //提交表单数据
    $("#form").submit();
    }
    </script>
    </body>

    form提交后打印结果展示






  • 相关阅读:
    SDUT2482二叉排序树
    POJ 3278Catch That Cow
    SDUT2140图结构练习——判断给定图是否存在合法拓扑序列
    SDUT2142数据结构实验之图论二:基于邻接表的广度优先搜索遍历
    SDUT2141数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
    SDUT1466双向队列
    搜索
    搜索
    贪心算法
    贪心算法
  • 原文地址:https://www.cnblogs.com/luzt/p/9394827.html
Copyright © 2011-2022 走看看