2012-06-09 57 views
2

我在div(parent1)中有一組單選按鈕,根據頁面上的其他設置通過javascript顯示或隱藏。無法讓jQuery Validation插件錯誤消息消失

<div class="parent1"> 
<input type="radio" name="legal_14" id="legal_14a" value="1" class="legal_14"/> <label for="legal_14a">option 1</label><br/> 
<input type="radio" name="legal_14" id="legal_14b" value="2" class="legal_14"/> <label for="legal_14b">option 2</label><br/> 
<input type="radio" name="legal_14" id="legal_14c" value="3" class="legal_14"/> <label for="legal_14c">option 3</label><br/> 
<span class="val-error"></span><br/> 
</div> 

我只想驗證單選按鈕時,他們是可見的。所以我有一個依賴回調來處理這種情況就像這樣:

"legal_14": { 
    required: function() {if (!$('.parent1').is(':visible')) {console.log(false); return false;} else if ($("input[name='legal_14']:checked").length > 0) {console.log(false); return false;} else {console.log(true); return true;}}}, 
... 
errorPlacement: function(error, element) { 
    element.nextAll(".val-error").first().html(error.html()); 
}, 
success: function(label) { 
    label.nextAll(".val-error").first().html(); 
} 

因此,這只是正常的在正確的情況下顯示錯誤消息(即,當按鈕是可見的,而不是點擊)。問題是,一旦我選擇其中一個單選按鈕,console.log就會正確返回false,但錯誤消息不會消失。我在其他地方有一個類似的依賴回調,不依賴於可見性,工作得很好。我究竟做錯了什麼?

回答

0

根據我的理解,這應該工作:

if($(".parent1").is(":visible")) 
{ 
    // do validation 

    // return message 
} 
+0

這基本上是我在做什麼,但我也檢查是否實際被選中的複選框之一。我從我的函數中得到了正確的返回值,它似乎沒有清除錯誤信息。 –