1

検証しようとしている SELECT フィールド (college_id) を持つフォームがあります。JQuery Validate Plugin を使用しており、その「リモート」オプションを使用しようとしています。

HTML:

<form id="registration-form" ... >
.
.
<select name="college_id" id="college_id" class="required" >
//Options generated using PHP code
</select>
.
.
</form>

ジャバスクリプト:

$(document).ready(function(){
    //For triggering the validation onChange
    $('#college_id').change(function(){
        $("#college_id").removeData("previousValue");
        $("#registration-form").validate().element("#college_id");
    });

    $('#registration-form').validate({
        rules:{
            college_id:{
                remote: {
                    type: 'POST',
                    url: urls.base_url+'Representative/checkCollegeAJAX/',
                    dataType:"json",
                    data:{
                        college_id:function(){
                            return $('#college_id').val();
                        }
                    },
                    dataFilter: function(data) {
                        data=JSON.parse(data);
                        console.log(data.isError);
                        if(!data.isError) { //If no error
                            return true;
                        } else {
                            console.log("Error Message: "+data.errorMessage);
                            return "\"" + data.errorMessage + "\"";
                        }

                    }
                }
            }
        }
    });


});

上記のように、 isError==True のときにエラー メッセージを表示しようとしています。

私の PHP コードは、次のような JSON エンコードされたオブジェクトを返します。

{"isError":true,"errorMessage":"Sorry!"}

エラーの場合 OR

{"isError":false,"errorMessage":""}

No Errorの場合。(ファイアーバグより抜粋)

問題は、応答に関係なく、SELECT フィールドの横に「このフィールドを修正してください」というメッセージが表示され続けることです。エラーが発生した場合にのみ、カスタム メッセージ (data.errorMessage) を表示する必要があります。

4

1 に答える 1

1

私は今この問題に直面しましたが、解決策は、エラーとして表示したい文字列を JSON として返しています。

したがって、すべてが問題ない場合は、true を返します。

echo json_encode(true);

あなたのphp/anyever ajax呼び出しで。

代わりに、エラーを表示する必要がある場合は、文字列を回答内に入れます。

echo json_encode("hey, we got something wrong here..");

エラーメッセージをローカライズする必要があり、コントローラーを介してそれを行うことができない場合は、リモートメソッドを呼び出すときにそれを渡すだけです:

data: {
    ajax: true,
    id: function() {
        return $( "#cid" ).val();
    },
    errormsg: "ERROR MSG WITH LOCALE"
},

これが他の誰かに役立つことを願っています:)

于 2013-07-15T13:29:58.577 に答える