2012-10-02 52 views
0

我有一個表單,我想驗證我的選擇框。Jquery驗證器錯誤邊框

<div id="wwctrl_add_savedAddressId" class="wwctrl styled-select"> 
    <select id="add_savedAddressId" class="required savedAddress checkDropdown"> 
</div> 

我用jquery驗證器來驗證它。

initValidation: function(){ 
      $(this.initVariables.formId).validate({ 
        ignore: ":hidden", 
        errorElement: "div", 
        errorPlacement: function(error, element) { 
         error.insertAfter(element.parent()); 
        } 
      }); 
    } 

如果選擇框等於-Select-它將返回一個錯誤。

$.validator.addMethod("check_item_dropdown", function(value, element) { 
       return this.optional(element) || value != "-Select-"; 
} 

該代碼工作,並將其結果

<div id="wwctrl_add_savedAddressId" class="wwctrl styled-select"> 
     <select id="add_savedAddressId" class="required savedAddress checkDropdown error"> 
</div> 
<div class="error" for="add_savedAddressId" generated="true"> Select item</div> 

因爲我已經注意到,jQuery的驗證是一個錯誤類是等於下面的CSS

select.error{ 
    border: 1px solid #F10016; 
    height: 23px; 
} 

誰在元素本身附加「錯誤」類。

問題是,如果我驗證選擇框,我想錯誤類在選擇框的父(在這種情況下#wwctrl_add_savedAddressId),因爲我想紅色邊框被放置在div選擇框本身。爲什麼?由於我們的選擇框設計具有背景圖像,而選擇框本身位於該圖像下方。

如何使用驗證器設置我的要求?

注:我有很多選擇框,我需要像這樣驗證。 謝謝。

回答

1

如果您無法訪問驗證器代碼,請嘗試對其進行破解。 嘗試這樣的事情

... 
errorPlacement: function(error, element) { 
    error.insertAfter(element.parent()); 
    if (element.is('select')) { 
     element.removeClass('error'); 
     element.parent().addClass('error'); 
    } 
} 
... 
+0

不工作... – newbie

+0

你看到三聯點?這意味着我沒有整個代碼。所以我無法測試它。如果你明白這個原則,試試你的自我。我剛剛寫了這段代碼。所以從我的角度來看,它是有效的。或者寫下爲什麼這段代碼不起作用。你有調試過嗎? – macino

+0

btw:我糾正了錯字 - 缺少開啓'{''if'後' – macino