解决jquery中blur()事件引起的登录网页先触发失去焦点事件

先看原来代码:
			//校验用户名
			function checkUsername() {
				alert("检验用户名");
				return true;
			}

			function checkPassword() {
				alert("检验密码");
				return false;
			}
			$(function () {

				//当表单提交时,调用所有的检验方法
                $("#registerForm").submit(function () {
                  //如果方法没有返回值或者返回为True,若返回false,则表单不提交
               	  return checkUsername() && checkPassword();
                
			   });
                 //当失去焦点时,校验用户名
				$("#username").blur(checkUsername());
			});

这部分代码主要是想在用户名username的input框失去焦点后,执行校验用户名的操作,但是实际上,当我们打开网页时,会发生先执行blur操作,这和我们想的完全不样,不应该是先使其获得焦点后,再当失去焦点才执行blur操作吗?

原因:

blur中传递的函数写法有问题,传递的函数只写函数名即可,不应该加括号。即:

$("#username").blur(checkUsername);//不是$("#username").blur(checkUsername());

另一种方法可以是在失去焦点事件中对其中的方法进行了延迟处理,修改代码如下:

			//校验用户名
			function checkUsername() {
				alert("检验用户名");
				return true;
			}

			function checkPassword() {
				alert("检验密码");
				return false;
			}
			$(function () {

				//当表单提交时,调用所有的检验方法
                $("#registerForm").submit(function () {

               	  return checkUsername() && checkPassword();
               	  //如果方法没有返回值或者返回为True,若返回false,则表单不提交
			   });


				//当某个组件失去焦点时,用对应的校验方法
				//在失去焦点事件中对其中的方法进行了延迟处理
				 $("#username").blur(function () {
				 	setTimeout(checkUsername(),100)
				 });

			});

修改后,jquery–blur()事件登录网页先触发失去焦点事件解决。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值