2012-05-03 21 views
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'); 
    } 
    }); 

ユーザーが入力しようとしているappnameが既にDBに存在するかどうかを確認する必要があります。私は、これはフィールドコントロールが赤くなりますが、それはフォームの送信を停止しませんが、このコード

$('#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'); 
      } 
     } 
    }); 
}); 

を使用してチェックを実行するために、AJAXを使用しています。私はエラーをチェックし返すためにサーバー側のロジックを複製したくない。

アプリ名が既に使用されている場合、フォーム提出を無効にするコードを追加することはできますか?

答えて

2

を使用してみてください助けてください。 jQuery Validateはリモート検証をサポートしており、あなたはそれを使用していません。

remoteルールをご覧ください。

0

が、私は何かが足りないかもしれないが、私はあなたが間違ったアプローチを取っていると思います$('#createapp').validate(...code...).cancelSubmit = true;

0

私は#createappがあなたのフォームであると推測していますか?そうであれば、名前がすでに使用されている場合はsubmit属性を変更します。

$('#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'); 
      } 
     } 
    }); 
}); 
関連する問題