2012-04-25 11 views
0

私は自分のフォームでvalidateプラグインを使用していますが、私はリモート機能でいくつかの問題に直面しています。jqueryリモート関数の有効性を確認する

私はこれを使って、ファイルにajax投稿を付けて、trueまたはfalseを返します。 私は、取られた、または取られた電子メールを入力すると、正しいエラーメッセージで警告します。

しかし、Ajaxがtrueを返すときは、何もしません。つまり、電子メールの入力ボックスをクリックしてから、それを再トリガーするまでクリックします。それを検証します。 Iveは、onblurトリガーなどのような、さまざまなソリューションを試してみました。事は、他のすべての入力フィールドが問題なく動作することです。チェックメールファイルは非常にまっすぐです。実際には問題はありません。

これは電子メールのチェックとユーザー名のチェックであり、それは呼び出したファイル以外は同じです。

ここで
$("#registerHere").validate({ 
onkeyup: false, 
onblur: true, 
rules:{ 
        usr_name: { 
        required: true, 
        minlength: 5, 
        remote: { 
        url: "inc/checkuser2.php", 
        type: "post", 
        async: false 
            } 
        }, 
        full_name:"required", 
        blog_name:"required", 

user_email: { 
    required: true, 
    email: true, 
    remote: { 
     url: "inc/checkmail.php", 
     type: "post", 
     async: false, 
     data: { 
      user_email: function() { 
       return $("#user_email").val() 
      } 
     } 
    } 
}, 
        pwd:{ 
         required:true, 
         minlength: 6 
        }, 
        cpwd:{ 
         required:true, 
         equalTo: "#pwd" 
        }, 
        gender:"required" 
       }, 

       messages:{ 
        usr_name:{ 
        required: "Velg et brukernavn", 
        minlength: "Minimum 5 bokstaver", 
        remote: "Dette brukernavnet er opptatt" 
        }, 

        full_name:"Skriv inn navnet ditt", 
        blog_name:"Velg en tittel til bloggen din", 

        user_email:{ 
         required: "Fyll inn e-post adressen din", 
         email:"Dette er ikke en gyldig e-post adresse", 
         remote:"Denne e-posten finnes allerede" 
        }, 
        pwd:{ 
         required:"Velg passord", 
         minlength:"Passordet må ha 6 tall og bokstaver" 
        }, 
        cpwd:{ 
         required:"Gjenta passordet", 
         equalTo:"Passordene er ikke like" 
        }, 
        gender:"Velg kjønn" 
       }, 

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

      }); 

は、(それが動作後、サニタイズされます)私のcheckmail.phpです:

$duplicate = mysql_query("select count(*) as total from users where user_email='$user' ") or die(mysql_error()); 
    list($total) = mysql_fetch_row($duplicate); 
     if ($total > 0) 
     { 
    $valid = 'false'; 
     } else { 
    $valid = 'true'; 
     } 
    echo $valid; 
    exit; 

フォームを提出するようだとそれは、重要ではないのですが、私はとても近くだとき、私はこのようにそれを残して嫌いです私が欲しいものに!

これは分かりましたが、私は本当にiveを読んでいただきありがとうございました。

+0

あなたはこれを見ることができますか?何が起こっていないのですか – Gerep

+0

何も起こっていない限り、それはエラーではありません。それは、最初に検証イベントを引き起こすことはありません。もう一度入力をクリックして再トリガーする必要があります。それはうまく動作します。ただし、電子メールが使用されている場合は、最初に実行されます。 – Havihavi

+0

http://api.jquery.com/trigger/を使ってみましたか? – Gerep

答えて

0

フォーム検証プラグインのAJAXに関しては、コールバックを使用して要素を返す必要があります。

onkeyup: function(element) { 
    this.element(element); 
} 

これの欠点は、あなたのコールバック内のチェックのいくつかの種類を実行したいと思うので、それは、すべてのkeyUpイベントであなたのAJAXを実行するということです。例:

onkeyup: function(element) { 
    if (element.type == 'password') 
     this.element(element); 
    else 
     return true; 
} 
関連する問題