jQuery的初始加载函数和html事件加载顺序

最近遇到一个问题,我在JSP里的一个input标签里面定义了一个onblur事件,然后该事件绑定的函数check()写在了js里。奇怪的是,当我把这个函数写在jQuery的初始加载函数里面之后,这个函数失效了。

代码如下:

<input type="text" name="phone" value="" id="phone" οnblur="validatemobile(this)">
$(function(){
function validatemobile(obj) {
		var mobile = $(obj).val();
		if (mobile.length == 0) {
			alert('请输入手机号码!');
			document.form1.mobile.focus();
			return false;
		}
		if (mobile.length != 11) {
			alert('请输入有效的手机号码!');
			$(obj).val("");
			document.form1.mobile.focus();
			return false;
		}

		var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
		if (!myreg.test(mobile)) {
			alert('请输入有效的手机号码!');
			$(obj).val("");
			document.form1.mobile.focus();
			return false;
		}
	}
});

上述写法,会使函数validateMobile()失效,可能是因为$(function(){})的执行顺序相对普通的js函数和事件加载机制的执行顺序要靠后,所以导致函数绑定失败。

解决方法:

把function validateMobile(obj){...}移出$(function{});就行了,并且要保证放在$(function{});之前。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值