0

フォームで検証プラグインを使用していますが、リモート機能でいくつかの問題に直面しています。

私はそれを使用してファイルへの投稿をajaxし、ファイルはtrueまたはfalseを返します。取得または取得したユーザー名の電子メールを入力すると、正しいエラーメッセージが表示されます。

しかし、ajaxがtrueを返すと、何も実行されません。つまり、電子メール入力ボックスをクリックし、クリックして再トリガーするまでです。次に、それを検証します。onblurトリガーなど、さまざまなソリューションを試しました。他のすべての入力フィールドはそのままで機能しますが、問題はありません。チェックメールファイルは非常に単純で、trueまたはfalseのいずれかをエコーし​​ますが、実際の問題はありません。

これは電子メールチェックとユーザー名チェックであり、呼び出すファイルを除いて、ルールは両方で同じです。

$("#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;

フォームが送信されているように見えるので、それは重要ではありませんが、私が望むものに非常に近いときは、このままにしておくのは嫌です!

これが理解できることを願っています、そして私はグーグルが私に与えたすべてを読んで試したのでどんな助けにも本当に感謝します!

4

1 に答える 1

0

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

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

これの欠点は、すべてのキーアップでAJAXを実行するため、コールバック内で何らかのチェックを実行する必要があることです。例えば:

onkeyup: function(element) {
    if ( element.type == 'password' )
        this.element(element);
    else
        return true;
}
于 2012-05-29T21:21:37.000 に答える