今天在用Jquery改造以前的JS代码过程当中,遇到了一个让我懵逼了三小时的问题。 问题的关键在 this 的使用。在这里与你们分享一下。而且分享一下我作表单提交的检查代码
javascript
错误代码以下:java
$("form").submit(function () {
return checkName() && checkAge() && checkEmail() && checkQq();
})
// 验证姓名
$('#name').blur(checkName);
function checkName() {
// 验证姓名验证正则
var reg = /^[\u4E00-\u9FA5\uf900-\ufa2d·s]{2,20}$/;
var flag = reg.test($('#name').val());
if( !flag ){
$('#error_name').remove();
$(this).after("<p id='error_name' class='error_msg'>姓名格式不正确 </p>");
} else {
$('#error_name').remove();
}
return flag;
}
复制代码
分析:函数
alert("我是谁?"+this);
$(this).after("<p id='error_name' class='error_msg'>姓名格式不正确 </p>");
复制代码
在离焦事件触发后,窗口弹出:this
<script>
// JQuery 完成表单检验
$(function () {
// 表单提交函数。检查name&age&email&qq等属性符合正则后方可提交
$("form").submit(function () {
return checkName() && checkAge() && checkEmail() && checkQq();
})
//验证姓名
$('#name').blur(checkName);
function checkName() {
// 验证姓名验证正则
var reg = /^[\u4E00-\u9FA5\uf900-\ufa2d·s]{2,20}$/;
var flag = reg.test($('#name').val());
if( !flag ){
$('#error_name').remove();
$('#name').after("<p id='error_name' class='error_msg'>姓名格式不正确 </p>");
} else {
$('#error_name').remove();
}
return flag;
}
//验证年龄
$('#age').blur(checkAge)
function checkAge() {
// 验证姓名验证正则
var reg = /^\d{1,3}$/;
var flag = reg.test($('#age').val());
if (!flag) {
$('#error_age').remove();
$('#age').after("<p id='error_age' class='error_msg'>年龄格式不正确 </p>");
} else {
$('#error_age').remove();
}
return flag;
}
//验证QQ
$('#qq').blur(checkQq)
function checkQq() {
// 验证姓名验证正则
var reg = /^\d{6,20}$/;
var flag = reg.test($('#qq').val());
if( !flag ){
$('#error_qq').remove();
$('#qq').after("<p id='error_qq' class='error_msg'>qq格式不正确 </p>");
} else {
$('#error_qq').remove();
}
return flag;
}
//验证Email
$('#email').blur(checkEmail)
function checkEmail() {
// 验证验证码正则
var reg = /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/;
var flag = reg.test($('#email').val());
if (!flag) {
$('#error_email').remove();
$('#email').after("<p id='error_email' class='error_msg'>邮箱格式不正确 </p>");
} else {
$('#error_email').remove();
}
return flag;
}
});
</script>
复制代码