2014-03-31 48 views
2

我有一系列ASP.Net RequiredFieldValidators,它們和它們的關聯控件一起,獲得隱藏的客戶端 - 它們被封裝在一個div中,我使用jQuery的.toggle()隱藏/顯示DIV根據需要:當ControlToValidate在客戶端不可見時禁用RequiredFieldValidator

<div id="reference" style="display: none"> 
<asp:TextBox runat="Server" id="txt"></asp:TextBox> 
<asp:RequiredFieldValidator runat="Server" id="rfv" ControlToValidate="txt"></asp:RequiredFieldValidator> 
</div> 

(簡化的)

撥動DIV關閉加 「顯示:無」 的樣式,如所預期。 RequiredFieldValidator仍然會作爲,雖然隱藏起來,但它仍然在頁面中處於活動狀態。我需要禁用客戶端不可見的驗證器。

使用jQuery,我怎麼能找到所有的控件進行驗證/驗證器有父母div與「顯示:無」,並禁用它們?

感謝

回答

2

典型。我發佈我的問題,然後在幾分鐘後自行解決。這是我結束了:

function ConfigureValidators() { 
    if (typeof Page_Validators != 'undefined') { 
     for (i = 0; i <= Page_Validators.length; i++) { 
      if (Page_Validators[i] != null) { 
       var visible = $('#' + Page_Validators[i].controltovalidate).parent().is(':visible'); 
       Page_Validators[i].enabled = visible; 
      } 
     } 
    }; 
} 
+0

儘管我的代碼似乎確實會導致驗證器立即觸發/驗證!? –

+0

嗯... ValidatorEnable()似乎調用ValidatorValidate()。 –

+1

更新我的代碼塊,使用.enabled代替對ValidatorEnabled()的調用。它現在按預期工作。 –

2
ValidatorEnable(ValidatorName, false); 

ASP.NET Validation in Depth - 看客戶端API小標題下。

你的情況:

<script type='text/javascript'> 
    ValidatorEnable('<%=rfv.ClientID %>', false); 
</script> 
相關問題