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

現在我需要檢查用戶試圖進入的應用程序名是否已經存在於數據庫中。我正在使用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'); 
      } 
     } 
    }); 
}); 

雖然這會使字段控制爲紅色,但不會停止表單提交。我不想複製服務器端的邏輯來檢查並返回錯誤。

什麼和哪裏可以添加代碼來禁用表單提交,如果應用程序名稱已被採納?

請幫助使用$('#createapp').validate(...code...).cancelSubmit = true;

回答

2

我可能失去了一些東西,但我覺得你採取錯誤的做法

0

嘗試。 jQuery Validate支持遠程驗證,並且不使用它。

請看看remote規則。

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