2012-02-06 36 views
0

我有我的驗證腳本工作正常,但我使用內聯塊錯誤並隱藏它們。當jQuery Validation插件將它們切換回來時,我想它會使用顯示內嵌顯示:block或display:inline style,這取決於標記。我需要做的是讓它顯示:inline-block。有沒有一種方法可以在jQuery Validate顯示錯誤之後將css選擇器附加到每個字段?jQuery驗證與行內塊錯誤

這是一段代碼。

$(document).ready(function() { 
$("#applicationForm").validate({ 
    errorElement: 'span', 
    errorContainer: $('.error'), 
    rules: { 
     email: { 
      required: true, 
      email: true 
     }, 
     emailVerify: { 
      required:true, 
      email:true, 
      equalTo: "#email" 
     } 
    } 
}); 
}); 

回答

1

我不是你需要做清晰的100%,但是你可以重寫以顯示通過實現showErrors功能錯誤驗證插件如何處理。

默認的一個本質是這樣的:

showErrors: function(errorMap, errorList) { 
    for (var i = 0; this.errorList[i]; i++) { 
     var error = this.errorList[i]; 
     this.showLabel(error.element, error.message); 

     this.settings.highlight && this.settings.highlight.call(this, error.element, this.settings.errorClass, this.settings.validClass); 
    } 
    if (this.errorList.length) { 
     this.toShow = this.toShow.add(this.containers); 
    } 
    if (this.settings.success) { 
     for (var i = 0; this.successList[i]; i++) { 
      this.showLabel(this.successList[i]); 
     } 
    } 
    if (this.settings.unhighlight) { 
     for (var i = 0, elements = this.validElements(); elements[i]; i++) { 
      this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, this.settings.validClass); 
     } 
    } 
    this.toHide = this.toHide.not(this.toShow); 
    this.hideErrors(); 
    this.addWrapper(this.toShow).show(); 
} 

這聽起來像您的喜好會改變最後一行到別的東西。

實現invalidHandler可能會更簡單,並讓該函數找到錯誤元素並適當地更改它們的顯示屬性。

+0

showErrors有效,但invalidHandler沒有。添加css inline-block立即打開所有錯誤。將此函數粘貼到我的驗證器選項中,通過添加this.addWrapper(this.toShow).css({'display':'inline-block'});到最後一行。我仍然希望有一個更清晰的方式來達到這個目的,但是它的工作方式也是我所需要的。謝謝。 – 2012-02-07 03:03:35

+0

是的,我注意到了一些需要擺弄'default'showErrors功能的問題。我認爲在某種程度上,對所有人來說都不是全部,但對於你的特殊情況,我可以看到增加選項來處理**如何顯示/隱藏。 – Ryley 2012-02-07 05:32:28