【前端框架】 layui form 表单提交获取数据、解决ajax提交数组问题

layui 的 form.js 中添加 u.prototype.getData,用于获取 form 表单的数据

  1. 代码如下
u.prototype.getData = function (e) {
  e = $('.layui-form[lay-filter="' + e + '"]').eq(0);
  const nameIndex = {} /*数组 name 索引*/
    , field = {}
    , fieldElem = e.find('input,select,textarea'); /*获取所有表单域*/
  layui.each(fieldElem, function (_, item) {
    item.name = (item.name || '').replace(/^\s*|\s*&/, '');
    if (!item.name) return;
    
    /*用于支持数组 name*/
    if (/^.*\[\]$/.test(item.name)) {
      var key = item.name.match(/^(.*)\[\]$/g)[0];
      nameIndex[key] = nameIndex[key] | 0;
      item.name = item.name.replace(/^(.*)\[\]$/, '$1[' + (nameIndex[key]++) + ']');
    }
    if (/^checkbox|radio$/.test(item.type) && !item.checked) return;
    field[item.name] = item.value;
  });
  /*检查重复字段*/
  $.each(field, function (index, key) {
    if (e.find("input[name='" + index + "']").size() > 1) {
      /*删除原有字段属性*/
      delete field[index];
      let newArrary = Array();
      /*更新数组长度*/
      for (v = 0; v < $("input[name='" + index + "']").size(); v++) newArrary.push($("input[name='" + index + "']:eq(" + v + ")").val());
      /*增加属性*/
      field[index] = newArrary;
    }
  });
  return field;
}
  1. 调用方式
<form id="addForm" class="layui-form" lay-filter='addForm'>
  <input type="text" name="name" />
</form>

<script type="text/javascript">
  layui.use(['form','jquery'], function () {
    var $ = layui.jquery;
    var form = layui.form;

    // 获取 form 表单数据
    const formValue = form.getData("addForm");
    $.ajax({
      url: url,
      type: "post",
      // 解决数组问题
      traditional: true,
      dataType: "json",
      data : formValue,
    });
  });
</script>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
layui中,可以使用form模块来处理表单的提交操作。以下是一个示例代码,演示如何在点击按钮时提交表单数据: HTML代码: ```html <form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label">用户名</label> <div class="layui-input-block"> <input type="text" name="username" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">密码</label> <div class="layui-input-block"> <input type="password" name="password" lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn" lay-submit lay-filter="submitForm">提交</button> </div> </div> </form> ``` JavaScript代码: ```javascript // 引入layui模块 layui.use(['form'], function() { var form = layui.form; // 监听表单提交事件 form.on('submit(submitForm)', function(data) { // 获取表单数据 var username = data.field.username; var password = data.field.password; // 打印获取的表单数据 console.log('用户名:', username); console.log('密码:', password); // TODO: 在这里可以进行表单提交等操作 return false; // 阻止表单默认提交 }); }); ``` 在上述示例中,我们使用layuiform模块监听了表单的提交事件,并通过`data.field`获取到了表单中输入的数据。你可以根据自己的需求,在监听事件中进行表单数据的处理、验证、提交等操作。最后,使用`return false`阻止表单的默认提交行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值