我想检查电子邮件地址是否已存储在数据库 后,电子邮件地址是否有效。我有两个功能完美,但同时,两个功能。我想要'检查电子邮件是否在数据库中'功能,以便在'检查电子邮件是否有效'之后运行。
电子邮件验证:
$(document).ready(function(){
$("#SignUp").validate({
rules:{
email:{
required:true,
email:true
},
},
messages:{
email:{
required:"Enter your email address",
email:"Enter valid email address"
},
gender:"Select Gender"
},
errorClass: "help-inline",
errorElement: "span",
highlight:function(element, errorClass, validClass) {
$(element).parents('.control-group').addClass('error');
},
unhighlight: function(element, errorClass, validClass) {
$(element).parents('.control-group').removeClass('error');
$(element).parents('.control-group').addClass('success');
}
});
});
电子邮件可用性检查:
$(function()
{
$('#email').keyup(function()
{
var email=$(this).val();
if(email!=''){
//$('.check').show();
$('error').fadeIn(400).html
('<img src="/img/ajax-loading.gif" />');
var dataString = 'email='+ email;
$.ajax({
type: "POST",
url: "pages/check_email.php",
data: dataString,
cache: false,
success: function(result){
if(result=='Available'){
$('.check').html(email+' Avaliable');
$('#create').attr('disabled', '');
$('#create').attr('value', 'Active');
$("#email").removeClass("red");
$("#email").addClass("white");
}else{
$('.check').html(email+' '+result);
$('#create').attr('disabled', 'disabled');
$('#create').attr('value', 'Deactive');
$("#email").removeClass("white");
$("#email").addClass("red");
}
}
});
}else{
$('.check').html('');
$('#submit').attr('disabled', 'disabled');
$('#submit').attr('value', 'Deactive');
}
});
});
有没有办法访问第一个函数来检查email:true,然后调用第二个函数?
答案 0 :(得分:0)
不,您无法从外部访问函数局部变量。
你可以在函数内部创建一个闭包,并通过该闭包访问它,但那是非常不同的。
答案 1 :(得分:0)
jQuery Validate有一个内置函数 - 名为remote
。如果你这样指定:
$("#SignUp").validate({
rules:{
email:{
required:true,
email:true,
remote: 'pages/check_email.php'
},
},
//rest of options
});
然后它会自动将email
帖子变量发送到您的check_email.php
脚本。让该脚本返回"true"
或"false"
。我相信默认行为将首先检查电子邮件,然后将其发送到您的AJAX脚本。你可以在这里看到一个例子:http://jsfiddle.net/ryleyb/PdP69/请注意,在jsfiddle上,由于网站的工作方式,你必须在指定远程页面时更复杂一点......但是你会看到控制台在电子邮件地址有效之前它不会进入远程。