2012-08-28 68 views
5

我正在使用jquery和驗證來驗證我的表單。 而不是增加一個元素缺失場我增加了邊框使用此選項元素 的errorPlacement如何清除錯誤時使用jQuery驗證和自定義errorPlacement

$("#signup-form").validate({ 
     submitHandler: function(form) { 
     form.submit(); 
    }, 
    errorPlacement: function(error, element) { 
     element.css("border", "solid 1px red"); 
    }      
}); 

一兩件事,我似乎無法搞清楚的是如何有效時清除它?

所以我開始使用上面的代碼。然後嘗試,我對結果感到困惑。 如果在字段失敗時我沒有success:選項,它會成功添加類。但只要我添加success選項所有必填字段都獲得該類,如果我檢查元素,我看到<input class="required invalid valid">,所以我做了一些不正確的事情。

  $("#signup-form").validate({ 
       submitHandler: function(form) { 
        // do other stuff for a valid form 
        //form.submit(); 
       }, 
       errorPlacement: function(error, element) { 
        element.addClass("invalid"); 
       },   
       success: function(error) { 
        // change CSS on your element(s) back to normal 
       },      
       debug:true 
      }); 
+0

通常,默認情況下,錯誤會自行清除。請詳細解釋和/或展示您的問題演示。 – Sparky

+0

我正在添加上面的代碼。所以當一個字段失敗,而不是添加一個新的元素,我只是將缺少的字段的邊界更改爲紅色。如果我放入信息並離開領域,它仍然有邊界。 – randy

+1

您可以參考這裏的答案:http://stackoverflow.com/questions/3518895/jquery-validation-plugin-callback-for-field-success-validation成功選項有一個回調,您可以用來禁用標籤的邊境。 – user1512616

回答

6

你可以嘗試添加這對您的.validate()選項列表...

success: function(error) { 
    // change CSS on your element(s) back to normal 
} 

這應該工作動態無形式提交。只要錯誤得到解決,包含的代碼就會運行。

請參閱documentation

請使用jsFiddle爲您的問題創建一個演示。這裏的a blank jsFiddle已與.validate()已包括在內,並準備使用。


編輯

OP's jsFiddle,我做了這些改變......

errorPlacement: function(error, element) { 
     $(element).filter(':not(.valid)').addClass("invalid"); 
    }, 
    success: function(error) { 
     console.log(error); 
     $("#signup-form").find('.valid').removeClass("invalid"); 
    } 

工作演示:http://jsfiddle.net/u3Td3/6/

側面說明:也有一些HTML問題UE的。您應該用/>「自動關閉」您的input元素。提交按鈕同樣如此,自閉而不是使用</input>。請參閱validator.w3.org以驗證您的HTML。我也不會使用table進行佈局,請使用CSS。

+0

添加評論/更多代碼的描述 – randy

+0

@randy,因爲我看不到你的HTML或你的頁面,我不能寫一個確切的解決方案。使用jsFiddle來創建你的問題的演示。這裏是[一個空白的jsFiddle](http://jsfiddle.net/jLE2s/),已經包含了'.validate()'並可以使用。 – Sparky

+0

http://jsfiddle.net/paries/u3Td3/1/ – randy