2010-11-19 174 views

回答

0

你必須抓住每一個元素,並通過您的驗證運行它,然後稍後提交表格。

使用$(id).value(對於id-d元素)或yourForm.someElementName.value(對於名稱爲d的元素,假設您的表單爲nameyourForm)。

0

你需要阻止默認表單提交

http://api.jquery.com/event.preventDefault/

$("form").submit(function(event){ 
    event.preventDefault(); 
    if(valid()) 
    { 
    $.post . . . 
    } 
}); 
+0

我以某種方式感覺他在做服務器端驗證..即提交表單兩次:一次用於驗證,一次用於實際處理。國際海事組織這是可怕的(但struts-jquery插件也做這樣的事情);請參閱我的答案以獲得更好的客戶端驗證解決方案。 – ThiefMaster 2010-11-19 01:46:29

+0

是的,我正在做服務器端驗證。 – ajx 2010-11-19 02:32:53

4

看一看的jQuery Validation Plugin

下面是一個例子就如何可以使用:

$("#myForm").validate({ 
    rules: { 
     command: 'required' 
    }, 

    messages: { 
     command: 'Please enter a command.' 
    }, 

    submitHandler: function(form) { 
     $(form).ajaxSubmit({ 
      success: function(data) { /* ... */ }, 
      url: form.action, 
      dataType: 'json' 
     }); 
    } 
}); 
+0

它支持服務器端驗證嗎? – ajx 2010-11-19 02:36:44

+1

不,通常正確的方法是首先進行客戶端驗證,因爲它更快,然後*提交表單,或者返回成功響應(可能會重定向用戶)或錯誤,然後處理通過你的成功回調。 如果大多數客戶端啓用了JavaScript,服務器端驗證可能會像返回「某些字段無效」一樣簡單 - 就像錯誤一樣,並依靠客戶端驗證冗餘錯誤 – ThiefMaster 2010-11-19 11:44:55

+0

+1來驗證客戶端。 99%的客戶確實啓用Javascript,因此可以處理客戶端的漂亮和有意義的驗證錯誤。在某些情況下,您沒有選擇,但必須在服務器端複雜的業務邏輯(即訪問Db等) – 2013-07-12 09:02:17

0

如果你想AJAXily做服務器端驗證,而無需繳納形式到另一個頁面,你可以做這樣的事情。您可以改爲將「提交」按鈕設爲「按鈕」類型,而不是將驗證操作綁定爲提交,然後將驗證綁定到其單擊事件。一旦它通過驗證,那麼你可以繼續前進。

例如:

$('#myPseudoSubmitButton').click(function() { 
    // Send the form to the server side for validation 
    $.post('validation_script.php', { form inputs here }, function(data) { 
      if (data.validated) { 
       // Perform some functionality that happens when the form validates 
      } 
      else { 
       // Display an error message to the user 
      } 
    }); 
}, 'json'); 

這當然前提是你的驗證腳本返回JSON格式的數據與「驗證」屬性。

相關問題