2013-01-19 224 views
-1

我正在嘗試jQuery驗證。我的代碼是:自定義jQuery驗證

jQuery.validator.addMethod("isOnlyEmail", function(value, element,param) { 
    var emailVal; 
    $.getJSON('get/getAllData.php?operation=email&email='+value, null, function(data) { 
     alert(data); 
     if(data==0) 
      emailVal true; 
     else 
      emailVal false; 
    }); 
    return emailVal; 
    }, "My message"); 

我想顯示我的消息,如果只返回值爲true。但是這個代碼是錯誤的。我的信息連續顯示。

如果我改變我的代碼如下:顯示

jQuery.validator.addMethod("isOnlyEmail", function(value, element,param) { 

     return false; 

     }, "My message"); 

我的消息。

如果我改變我的代碼如下:不顯示

jQuery.validator.addMethod("isOnlyEmail", function(value, element,param) { 

      return true; 

      }, "My message"); 

我的消息。

有什麼想法?

HTML代碼:

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title></title> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
     <script>window.jQuery || document.write('<script src="js/jquery.js"><\/script>')</script> 
     <script language="javascript" type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> 

     <!-- Bootstrap jQuery plugins compiled and minified --> 
     <script type="text/javascript" src="./js/jquery.validate.js"></script> 
     <script> 
      $(document).ready(function(){ 

       jQuery.validator.addMethod("isOnlyEmail", function(value, element,param) { 
        var emailVal; 

        $.getJSON('get/getAllData.php?operation=email&email='+value, null, function(data) { 
         alert(data); 
         if(data==0) 
          emailVal true; 
         else 
          emailVal false; 
        }); 
        return emailVal; 
       }, "My Message"); 

       $("#signupform").validate({ 
        rules:{ 
         email:"isOnlyEmail" 
        }, 

        highlight: function(label) { 
         $(label).closest('.control-group').removeClass('success'); 
         $(label).closest('.control-group').addClass('error'); 
        }, 
       success: function(label) { 
        label 
        .text('OK!').addClass('valid') 
        .closest('.control-group').removeClass('error') 
        .closest('.control-group').addClass('success'); 
       } 
      }); 
     }); 
     </script> 

    </head> 
    <body> 
     <input id="email" type="email" name="email" placeholder="[email protected]" /> 
    </body> 
</html> 

PHP代碼

<?php 

    require_once("../db/dbconnect.php"); 

    $operation = $_GET['operation']; 

    if($operation == "email"){ 

     $mail=$_GET['email']; 
     $query = "SELECT * FROM ACCOUNT WHERE email='".$mail."'"; 
     $result = execute_query($query); 
     echo mysql_num_rows($result); 
    } 
?> 
+0

你試過在Firebug中進行調試嗎? –

+0

是的,我試過了。 .getJSON()函數工作正常。 – cguzel

+0

請發佈代碼的其餘部分...表單和其他jQuery的HTML。 – Sparky

回答

0

我的問題就解決了。

更改我的代碼如下:

jQuery.validator.addMethod("isOnlyEmail", function(value, element) { 
    var emailVal=true; 
    $.ajax({ 
     url: 'get/getAllData.php?operation=email&email='+value, 
     type:'GET', 
     dataType: 'json', 
     async: false, 
     success: function (data) { 
      if(data==0) 
       emailVal=true; 
      else 
       emailVal=false; 
      }, 

     }); 
    return emailVal; 
}, "My Message"); 

通常情況下,Ajax調用運行異步模式。由於異步模式,它不起作用。如果在我的代碼中添加了「async:false」,問題就解決了。