2013-01-19 164 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”,问题就解决了。