0

特定のフィールドでサーバー側とクライアント側の両方の検証が必要なフォームがあります。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');
            }
        }
    });
});

これによりフィールドコントロールが赤になりますが、フォームの送信は停止しません。エラーをチェックして返すためにサーバー側でロジックを複製したくありません。

アプリ名がすでに使用されている場合、フォームの送信を無効にするコードをどこに追加できますか?

助けてください

4

3 に答える 3

2

私は何かが欠けているかもしれませんが、あなたは間違ったアプローチを取っていると思います。jQuery Validateはリモート検証をサポートしており、使用していません。

remoteルールを見てください。

于 2012-05-03T18:38:18.207 に答える
0

使ってみてください$('#createapp').validate( ...code...).cancelSubmit = true;

于 2012-05-03T18:37:34.917 に答える
0

それ#createappがあなたの形だと思いますか?その場合、名前がすでに使用されている場合は、送信属性を変更します。

$('#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');
               $('#createapp').attr('submit', 'return false;');
            }
            else
            {
                var controlDiv = $('#appname').closest('.control-group');
                   controlDiv.addClass('success');
                   controlDiv.removeClass('error');
            }
        }
    });
});
于 2012-05-03T18:38:36.430 に答える