特定のフィールドでサーバー側とクライアント側の両方の検証が必要なフォームがあります。jquery検証プラグインを使用してクライアント側の検証を実行しています。以下は同じためのコードです。
$('#createapp').validate({
rules: {
appname: {
minlength: 8,
required: true
},
apptitle: {
required: true
}
},
highlight: function(label) {
$(label).closest('.control-group').addClass('error');
},
success: function(label) {
label
.text('OK!').addClass('valid')
.closest('.control-group').addClass('success');
}
});
次に、ユーザーが入力しようとしているアプリ名がDBにすでに存在するかどうかを確認する必要があります。このコードを使用してチェックを実行するためにajaxを使用しています
$('#appname').focusout(function(){
$.ajax({
type: "POST",
url: "<?php echo base_url();?>index.php/app/application/check_app",
data: "appname="+$("#appname").val(),
success: function(msg){
if(msg == "false")
{
var controlDiv = $('#appname').closest('.control-group');
controlDiv.addClass('error');
controlDiv.removeClass('success');
}
else
{
var controlDiv = $('#appname').closest('.control-group');
controlDiv.addClass('success');
controlDiv.removeClass('error');
}
}
});
});
これによりフィールドコントロールが赤になりますが、フォームの送信は停止しません。エラーをチェックして返すためにサーバー側でロジックを複製したくありません。
アプリ名がすでに使用されている場合、フォームの送信を無効にするコードをどこに追加できますか?
助けてください