2011-04-19 52 views
2

我認爲這是一個常見問題。我有一個窗體,我使用jQuery動態顯示/隱藏字段,具體取決於某些單選按鈕。如何在隱藏字段(TextBox)上觸發RequiredFieldValidator

我在所有的字段上都有RequiredFieldValidator,但是我不想讓它們在ControlToValidate被隱藏的情況下觸發(使用jQuery)。

這可能嗎?提前致謝。

編輯:這是解決方案,感謝Marek。如果你有,因爲MasterPages

這是ASPX

<asp:TextBox ID="txtName" runat="server" /> 
<asp:RequiredFieldValidator ID="vldName" ControlToValidate="txtName" runat="server" ErrorMessage="You must enter Name!" /> 
... 
<asp:Button ID="btnSubmit" runat="server" Text="Submit" /> 

怪異的ClientID它可能不是很明顯這是jQuery的

$(function() { 
    $('#ctl00_cphContent_btnSubmit').click(function() { 
    if (!$('#ctl00_cphContent_txtName').is(':visible')) 
     ValidatorEnable(ctl00_cphContent_vldName, false); 
    }); 
}); 

希望它會使一個人的生活更輕鬆

+0

快速提示的驗證,從來沒有硬編碼控件的ID在JavaScript中,使用$( '#<%= btnSubmit.ClientID%>')。點擊。而是。 – mattmanser 2011-06-06 12:59:03

回答

4

如果我沒有記錯,有一個名爲ValidatorEnable(validatorClientId, isEnabled)功能,可以禁用/啓用ASP.NET通過JavaScript驗證器。您可以在表單提交之前使用jQuery來禁用所有不可見的驗證器。

有關於客戶端API提供一些文件從這裏http://msdn.microsoft.com/en-us/library/aa479045.aspx

+0

這是一個鏈接到一個復古的2000年文檔,在2002年更新,所以.NET 1.0?隨着HTML 3.2的提及,有一段時間沒有想過。 – fortboise 2013-02-06 00:33:38

0

嘿,你可以設置控件來驗證屬性從C#代碼時,我們從C#代碼設置Visiblility.This將解決你的問題。

if ($('#input-name').length) { 
     // do something 

} 

這將解決目前問題烏爾

+0

問題是我使用jQuery來做事情,以避免不必要的回傳和延遲。沒有涉及C#。 – Aximili 2011-04-19 04:25:21

+0

Aximili - 如果你使用jQuery,那麼我確信沒有必要使用名爲RequiredFieldValidator的控件,因爲它是一個ASP.net控件。此外在jQuery中,你可以編寫代碼來首先檢查是否存在該控件。 – Abhi 2011-04-19 04:28:33

+0

你說得對,我正在寫我自己的驗證器。我只是想知道我是否仍然可以使用ASP.NET驗證器,因爲這意味着要爲我編寫更少的代碼。 – Aximili 2011-04-19 23:33:31