2013-01-19 15 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

파이어 버그에서 디버깅을 시도 했습니까? –

+0

예. 시도했습니다. .getJSON() 함수가 올바르게 작동하고 있습니다. – cguzel

+0

양식의 나머지 부분과 jQuery의 나머지 코드를 게시하십시오. – 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"); 

일반적으로, 아약스 호출은 비동기 모드로 실행됩니다. 비동기 모드로 인해 작동하지 않습니다. 내 코드에 "async : false"가 추가되면 문제가 해결됩니다.

관련 문제