2012-06-28 39 views
1

我有一個禁用的自定義驗證程序,我想要使用jQuery啓用它。
我該怎麼做?下面
的代碼適用於RequiredFieldValidators而不是CustomValidators:如何啓用禁用自定義驗證器使用jquery

 ValidatorEnable($('#cvPass'), true); 

該如何解決?
編輯:
我使用服務器端驗證,而不是客戶端。
當我們使用客戶端驗證時,啓用和禁用自定義驗證器沒有問題。
感謝@Josh拜見

感謝的好簡單的代碼提前

+0

我在我的答案中發佈了一條額外的評論,我想這會告訴你可能發生的事情。 –

回答

1

我沒有跟你已經嘗試了任何問題。下面是一個簡單的例子是爲我工作:

HTML

<asp:TextBox runat="server" ID="txt_Test" /> 
<asp:CustomValidator runat="server" ID="val_Test" ValidateEmptyText="true" ClientValidationFunction="MyValidation" ControlToValidate="txt_Test" ErrorMessage="Test"></asp:CustomValidator> 
<asp:Button runat="server" ID="btn_Test" Text="Test" onclick="btn_Test_Click" /> 
<input type="button" value="disable validator" onclick="disableValidator()" /> 
<input type="button" value="enable validator" onclick="enableValidator()" /> 

Javscript

function enableValidator() { 
    ValidatorEnable($('[id$=val_Test]')[0], true); 
} 

function disableValidator() { 
    ValidatorEnable($('[id$=val_Test]')[0], false); 
} 

function MyValidation(sender, args) { 
    if ($('[id$=txt_Test]').val() == "") 
     args.IsValid = false; 
} 

編輯:隨着新的信息,我相信我知道是什麼是問題。在服務器驗證開始之前,頁面會重新加載,導致驗證程序被設置爲禁用,因爲根據最後一個已知狀態的服務器。這是因爲驗證器不是控件的值被髮回到服務器。您可以設置一個可以告訴服務器驗證控件的值的hiddenField。

+0

感謝您的答案/但你禁用它,我認爲這是沒有問題的。我想啓用一個禁用的CustomValidator! – MoonLight

+0

我只是嘗試啓用,它的工作。 –

+0

非常抱歉的人,我忘了告訴你,我正在使用服務器端驗證。您的簡單代碼適用於兩種方式。但服務器端驗證呢? – MoonLight