2012-05-29 96 views
3

您好!

我的問題是下面的

驗證插件正常工作對我來說,除了我不想讓表單提交時,它不是仍然有效。

事實上,它驗證並顯示錯誤,但即使它無效,它也會進行提交。


驗證

$("form#form-utilizadores").validate({ 
    rules:{ 
    nome:{ 
     required:true 
    }, 
    utilizador:{ 
     required:true 
    }, 
    password:{ 
     required:true 
    }, 
    tipo:{ 
     required:true 
    } 
    } 
}); 


提交

$('form#form-utilizadores').submit(function(e){ 
    e.preventDefault(); 
    var data = $(this).serialize(); 
    $.post('submit/submit-utilizadores.php',data,function(data){ 
     alert((data=='sucesso') ? 'Adicionado com sucesso!' : data); 
     top.location.reload(); 
    } 
); 
}); 

謝謝你的時間花在試圖幫助我! :)

+0

你指定form.submit()_before_分配form.validate()? –

回答

2

你應該把你在$('form#form-utilizadores').submit()並把它放在了jQuery的submitHandler參數驗證設置代碼,試試這個:

$("form#form-utilizadores").validate({ 
    rules: { 
     // your current rules... 
    }, 
    submitHandler: function(form) { 
     var data = $(form).serialize(); 
     $.post( 
      'submit/submit-utilizadores.php', 
      data, 
      function(data) { 
       alert((data=='sucesso') ? 'Adicionado com sucesso!' : data); 
       top.location.reload(); 
      } 
     ); 
    } 
}); 

當前的代碼總是提交究其原因,是因爲形式submit無論表格是否有效,事件總是會被提出。通過submitHandler,讓jQuery驗證控件是否發佈表單,具體取決於它的有效性。

+0

這就是我所需要的,但現在它不會觸發警報,只有重裝... – silentw

+0

好吧,我發現問題是你需要做'$(form).serialize();否則它將無法正常工作:) – silentw

+0

啊,很好趕上:) –

1

如果您的驗證失敗,請從提交中返回false。

2

嘗試在您提交處理程序添加以下代碼:

$('form#form-utilizadores').submit(function(e){ 
    e.preventDefault(); 
    if($(this).valid() == false){ 
     return; 
    } 
    . 
    . 
    . 
+0

感謝您的快速回答和另一種方式,但我想羅裏的答案是正確的方式來做到這一點:) – silentw