検証しようとしている 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) を表示する必要があります。