监听input输入框的失去焦点事件与按钮点击事件执行的顺序问题

1.问题描述

当在监听input失去焦点的事件的时候,在input输入框输入一段文字之后,点击发送按钮会发现,只触发了失去焦点事件,按钮点击事件并没有被触发,当再次点击按钮的时候,事件才会被触发

2.代码

<body>
		<div id="divContainer">
			<input class="inTest" />
			<button class="btn-send">发送</button>
		</div>
		<script type="text/javascript">
			$(function(){
				$(".inTest").focus(function(){
					
				}).blur(function(){
					alert("-----blur----");
				});
				$(".btn-send").click(function(e){
					alert("-----click----");
				});
			});
		</script>
</body>

3.效果图

170403_1LLV_3680343.png

4.解决办法

由于失去焦点事件发生的顺序在点击事件之前,这样我预期的触发点击事件的效果就达不到,为了达到触发点击事件,我在失去焦点时间里面加了setTimeout()方法,让失去焦点事件延迟500毫秒再触发,这样就调换了失去焦点和按钮点击事件的顺序,做到我所期待的效果

5.解决之后的代码

<body>
		<div id="divContainer">
			<input class="inTest" />
			<button class="btn-send">发送</button>
		</div>
		<script type="text/javascript">
			$(function(){
				$(".inTest").focus(function(){
					
				}).blur(function(){
					setTimeout(function(){//添加时间定时器
						alert("-----blur----");
					},500);
				});
				$(".btn-send").click(function(e){
					alert("-----click----");
				});
			});
		</script>
</body>

6.解决之后的效果图

171245_kYM2_3680343.png

 

转载于:https://my.oschina.net/u/3680343/blog/1822695

Layui是一个前端UI框架,它提供了一套丰富的组件来帮助开发者快速开发出美观的网页界面。对于`input`输入框失去焦点时触发事件Layui同样提供了简单易用的事件监听方式。 在Layui中,通常会用其提供的表单验证模块`laytpl`来实现`input`元素失去焦点时触发的事件。你可以使用`onblur`事件监听`input`元素的失去焦点行为。下面是一个简单的示例: ```javascript // 假设你已经加载了Layui的CSS和JS文件 // HTML部分 <form class="layui-form"> <div class="layui-form-item"> <label class="layui-form-label">输入框示例</label> <div class="layui-input-block"> <input type="text" name="test" 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="formDemo">立即提交</button> <button type="reset" class="layui-btn layui-btn-primary">重置</button> </div> </div> </form> // JavaScript部分 <script> layui.use('form', function(){ var form = layui.form; // 监听事件 form.on('blur(input)', function(data){ console.log('input失去焦点'); // 这里的data.field是input的name属性值,data.value是input的当前值 console.log('当前字段名:', data.field); console.log('当前字段值:', data.value); // 在这里可以执行你的逻辑 }); // render表单 form.render(); }); </script> ``` 在上述代码中,我们通过`form.on`方法监听了`input`元素的`blur`事件。当`input`元素失去焦点时,会执行回调函数,其中`data.field`表示触发事件的`input`元素的`name`属性值,`data.value`表示该`input`元素的当前值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值