2013-01-22 92 views
1

我想檢查電子郵件字段是否已經存儲在數據庫之後電子郵件地址有效。我的兩個功能都可以完美地工作,既可以同時工作。我希望'檢查電子郵件是否在數據庫'功能在'檢查電子郵件是否有效'後生效。jQuery函數在另一個函數有效後運行

電子郵件驗證:

$(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'); 
} 
}); 
}); 

是否有訪問的第一個函數的一些方法來檢查,如果電子郵件:真,然後調用第二個函數?

回答

0

不,您不能從外部訪問函數局部變量。

你可以在函數內部創建一個閉包,並通過閉包訪問它,但這是非常不同的。

0

有一個jQuery驗證的內置函數 - 稱爲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中,由於網站的工作原理,在指定遠程頁面時必須更加複雜一點......不過,請注意控制檯,直到電子郵件地址有效時才轉到遠程。

相關問題