Layui表单提交时对data.field中字段的取值问题

后台接收页面表单的方式一般来说有两种(ssm来说,我这里用的是Jfinal,类似),
一种是以成员变量的方式接收
另一种是以对象的方式接收
成员变量接收:控制器中方法的形参必须和页面name中的值一样(Jfinal类似,不过没有形参,已封装好,直接 getPara("") 获取)
对象接收:将所有字段映射到数据库表中字段(这也是我下面要说明的情况)

<!-- 假如我数据库有张表,这里不管表名,我在页面中所有的name都是以对象.字段的形式写的,
name在后台我就不用一个个的获取这些参数了,因为后台做了映射,直接getModel()就好了,扯远了,说页面上的事 -->
<form action="" class="layui-form">
	<!-- 为了测试,我这里加一个name不是带有小数点的属性abc -->
	<input type="hidden" name="abc" value="ABC" class="layui-input">
	<input type="hidden" name="us.userId" value="${us.userId!}" class="layui-input">
	<div class="layui-form-item">
		<div class="layui-inline" style="margin-left: 15%;">
			<label class="layui-form-label">姓名:</label>
			<div class="layui-input-inline">
				<input type="text" name="us.name" value="${us.name!}" lay-verify="required" autocomplete="off" class="layui-input">
			</div>
	
			<label class="layui-form-label">住址:</label>
			<div class="layui-input-inline">
				<input type="text" name="us.addr" value="${us.addr!}" lay-verify="required" autocomplete="off" class="layui-input">
			</div>
		</div>
	</div>
	
	<button type="submit" id="tj" class="layui-btn" lay-submit="" lay-filter="save" >保存</button>
</form>
<script type="text/javascript">
	layui.use(['layer','form'],function () {
		var form = layui.form;
		var layer = layui.layer;
		form.on('submit(save)', function(data){
			console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
			//获取表中name为abc的值
			var abc = data.field.abc;
			return false;
		})
	})
</script>

如果name中使用了“xx.xxx”的形式,用上面的方法(data.field.xx.xxx)就或取不到值了,会报错说xx is not undefined,不是这么取的,正确的方法应该是这样的data.field["xx.xxx"];

<script type="text/javascript">
	layui.use(['layer','form'],function () {
		var form = layui.form;
		var layer = layui.layer;
		form.on('submit(save)', function(data){
			console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
			//获取表中name为abc的值
			var abc = data.field.abc;
			//获取表单中姓名框中的值
			//var name = data.field.us.name;			//这种写法取不到值,会报错
			var name = data.field["us.name"];			//正确的写法
			return false;
		})
	})

name中使用了“xx.xxx”的形式的好处(对于Jfinal来说),如果想要添加一个字段“联系方式”,我就不需要去改后台了,
直接把数据库的字段添加好之后,页面上加一个input框,name写上“us.数据库字段”,这样功能就实现了。
tips: 这个us是随意取的,这里写us的话,后台接收就是us;为Jfinal打个广告,如需了解JFinal,请点击下方链接直达。
Jfinal极速开发框架

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Layui 是一个非常流行的前端 UI 框架,它提供了一系列的表单组件来方便我们进行表单的设计和提交。对于表单提交Layui 也提供了一些相应的 API 接口。下面是一个简单的示例代码,展示了如何使用 layui 实现表单提交页面: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>表单提交页面</title> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.min.css"> </head> <body> <div class="layui-container" style="margin-top: 50px;"> <div class="layui-row"> <div class="layui-col-md6 layui-col-md-offset3"> <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" required 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" required 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="login">登录</button> </div> </div> </form> </div> </div> </div> <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.min.js"></script> <script> layui.use(['form'], function () { var form = layui.form; //监听提交 form.on('submit(login)', function (data) { // Ajax 提交表单 $.ajax({ url: 'submit.php', type: 'POST', data: data.field, success: function (res) { if (res.code === 0) { layer.msg('提交成功'); } else { layer.msg('提交失败'); } } }); return false; }); }); </script> </body> </html> ``` 在这个示例,我们使用了 layui 的表单组件来设计了一个登录表单,包括了用户名和密码两个字段。在表单提交,我们通过 AJAX 的方式将表单数据提交到了服务器端的 submit.php,然后根据服务器返回的结果给出了相应的提示信息。 需要注意的是,这里我们使用了 layui 的表单验证功能,来确保用户输入的数据是合法的。在提交表单之前,我们需要调用 form.on('submit', function(data){}) 方法来监听表单提交事件,然后在回调函数进行表单数据的处理和提交。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值