layui 获取表单数据

layui 获取表单数据

一、说明:

layui提供form.val来获取表单数据
语法:form.val(‘filter’, object);

但是,有时候会遇到form.val无法获取表单数据的问题,目前没有找到原因,为了处理这个问题,所以诞生了这边文章。

二、代码

/**
 * 获取表单数据
 * @param {*} filter lay-filter属性值
 * @param {*} itemForm dom对象
 */
function getFormData(filter, itemForm) {
  itemForm = itemForm || $('.layui-form[lay-filter="' + filter + '"]').eq(0)

  var nameIndex = {} //数组 name 索引
    , field = {}
    , fieldElem = itemForm.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
  })

  return field
};
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
form表单元素包括:text 文本输入框,password密码输入框,checkbox复选框,radio单选框,file 文件域,submit表单提交action指向的文件,reset表单清空,image图片提交按钮,button按钮,hidden隐藏域。 select option select 实现下拉选 callback 是回调函数 layui.模块   模块可以是layui已经存在的模块,也可以通过layui.define([mods], callback) 来自己自定义模块。 如果想要使用模块首先要做的必然是加载模块,layui.use(['laypage', 'layedit'], function(){}); 接下来使用layui风格控件  其实感觉layui帮我们定义好了CSS和许多JS文本,我们需要做的只是按照layui的命名规范选好样式进而使用就可以了。  layu官方文档的命名规范为: CSS命名规范 class命名前缀:layui,连接符:-,如:class="layui-form" 命名格式一般分为两种: 一:layui-模块名-状态或类型 二:layui-状态或类型 因为有些类并非是某个模块所特有,他们通常会是一些公共类。如: 一(定义按钮的原始风格):class="layui-btnlayui-btn-primary" 二(定义内联块状元素):class="layui-inline" 1 2 3 4 5 6 7 8 9 当然还有前面提到的使用模块的js代码: layui.use(['form', 'layedit', 'laydate'], function(){   var form = layui.form   ,layer = layui.layer   ,layedit = layui.layedit   ,laydate = layui.laydate;   //日期   laydate.render({     elem: '#date'   });   laydate.render({     elem: '#date1'   });   //创建一个编辑器   var editIndex = layedit.build('LAY_demo_editor');   //自定义验证规则   form.verify({     title: function(value){       if(value.length < 5){         return '标题至少得5个字符啊';       }     }     ,pass: [/(.+){6,12}$/, '密码必须6到12位']     ,content: function(value){       layedit.sync(editIndex);     }   });   //监听指定开关   form.on('switch(switchTest)', function(data){     layer.msg('开关checked:'+ (this.checked ? 'true' : 'false'), {       offset: '6px'     });     layer.tips('温馨提示:请注意开关状态的文字可以随意定义,而不仅仅是ON|OFF', data.othis)   });   //监听提交   form.on('submit(demo1)', function(data){     layer.alert(JSON.stringify(data.field), {       title: '最终的提交信息'     })     return false;   }); }); 下面我们按照官方文档的开发规范使用一下form表单的例子       表单集合演示           单行输入框                       验证必填项                             验证手机                                   验证邮箱                                       多规则验证                                   验证日期                                   验证链接                                 验证身份证                       自定义验证                   请填写6到12位密码               范围                           -                                 单行选择框                   </opt
### 回答1: 在 layui 中,可以通过使用 `form.val("formId")` 来获取子页面中表单数据。其中 `formId` 是子页面中表单元素的 id。使用示例如下: ``` <form class="layui-form" id="formId"> <input type="text" name="username" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input"> <input type="password" name="password" lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input"> </form> <script> // 获取表单数据 var formData = form.val("formId"); console.log(formData); // {username: "test", password: "123456"} </script> ``` 可以通过console.log打印出来查看表单的值 ### 回答2: 在 layui获取子页面表单数据,需要使用 layui表单模块进行操作。首先,在子页面的表单中,我们需要给表单元素设置一个唯一的 id,方便后续通过 id 来获取表单数据。 然后,在父页面中,可以使用 layui 的 form 模块的 on 绑定事件的方式,来获取子页面表单数据。具体步骤如下: 1. 引入 layui 的 form 模块和 layer 模块。 2. 在子页面的表单元素中,给每个需要获取数据表单元素设置一个 id,例如: <input type="text" id="name" name="name"> 3. 在父页面的 js 中,使用 layui 的 form 模块的 on 绑定事件的方式,来获取子页面表单数据,例如: layui.form.on('submit(submitBtn)', function(data){ var name = data.field.name; // 其它表单元素的获取方式类似 }); 这里的 'submitBtn' 是一个按钮的 id,通过该按钮来触发提交事件。 4. 在子页面的表单提交按钮上,添加一个 lay-filter 属性,属性值为 'submitBtn',例如: <button class="layui-btn" lay-filter="submitBtn" lay-submit>提交</button> 通过以上步骤,我们就可以在父页面中通过 form 模块的 on 绑定事件的方式,获取子页面表单数据了。 ### 回答3: 在layui获取子页面表单数据有多种方法: 1. 使用layui的form模块,通过form.on('submit(formDemo)', function(data){})事件获取表单数据。首先,在子页面中引入layui的form模块,然后在表单元素上增加lay-filter属性,设定一个唯一的值,比如lay-filter="formDemo"。接着,在父页面中监听子页面的表单提交事件,代码如下: 子页面: ```html <form class="layui-form" lay-filter="formDemo"> <!-- 表单内容 --> </form> ``` 父页面: ```javascript layui.use(['form'], function(){ var form = layui.form; form.on('submit(formDemo)', function(data){ // 获取子页面表单数据 var formData = data.field; // 其他操作 return false; // 阻止表单跳转 }); }); ``` 2. 使用layui的iframe模块,在子页面中通过top.layui.jquery获取父页面的jquery对象,然后通过表单选择器获取表单元素,使用jquery的serializeArray()方法获取表单数据。代码如下: 子页面: ```html <form id="myForm"> <!-- 表单内容 --> </form> <script> var $ = top.layui.jquery; // 获取父页面的jquery对象 // 表单提交事件 $('#myForm').on('submit', function(e){ e.preventDefault(); // 获取子页面表单数据 var formData = $(this).serializeArray(); // 其他操作 }); </script> ``` 需要注意的是,第二种方法需要在子页面中引入jquery库,并且确保父子页面的域名和协议相同,否则会因为跨域问题导致无法获取数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值