2013-05-28 19 views
16

mam walidacji jak poniżej, ale tylko jak na wyzwalany jeśli pole jest zaznaczone.asp: RequiredFieldValidator walidacji na podstawie warunków

<!-- TextBox and its validator --> 
Name: <asp:TextBox ID="TextBox1" runat="server" /> 

<asp:RequiredFieldValidator runat="server" 
     ID="RequiredFieldValidator1" 
     Text="*" 
     ErrorMessage="Name is required" 
     ControlToValidate="TextBox1" /> 

Czy mogę to zrobić za pomocą asp: RequiredFieldValidator?
Chcę tylko sprawdzić, czy określony warunek jest zgodny.
Obecnie sprawdza się za każdym razem, gdy kliknięty jest przycisk "Zapisz".

+1

Użyj 'CustomValidator' zamiast: – mshsayem

+0

Dowolny przykład? Mój weryfikator wymaga interakcji opartej na wielu kontrolach i warunkach. – ove

Odpowiedz

7

Rozwiązałem to łatwo dodając następujący JavaScript po stronie klienta.

ValidatorEnable(document.getElementById("RequiredFieldValidator1"), true); or 
ValidatorEnable(document.getElementById("RequiredFieldValidator2"), false); 
+0

cudowny !!! rodzaj hakowania, ale tak sprytny. – Jaider

+4

Page.IsValid będzie w tym przypadku fałszem –

28

Użyj niestandardowy walidator Zamiast:

<asp:CustomValidator ID="cv1" runat="server" 
     ErrorMessage="Name is required" 
     Text="*" 
     ControlToValidate="TextBox1" 
     ValidateEmptyText="True" 
     ClientValidationFunction="validate" /> 

i skrypt (tylko sprawdzanie pole wyboru, a wartość pola tekstowego jako przykład, można użyć niestandardowego logiki):

<script type="text/javascript"> 
    function validate(s,args){ 
     if(document.getElementById("<%= checkboxId.ClientID %>").checked){ 
      args.IsValid = args.Value != ''; 

     } 
     else{ 
      args.IsValid = true; 
     } 
    } 
</script> 

to zrobi walidacja po stronie klienta. Jeśli potrzebujesz również sprawdzania poprawności serwera, dodaj atrybut OnServerValidate i kod obsługi z kodem. See here for details.

+9

Uwaga: jeśli zastanawiasz się, dlaczego nie uruchamia się na pustym polu tekstowym, musisz ustawić "ValidateEmptyText =" True "' na CustomValidator. – arnaudoff

0

Możesz także spróbować ten

protected void CheckBox_CheckedChanged(object sender, EventArgs e) 
{ 

    if(CheckBox.Checked) 
    { 
     RequiredFieldValidator1.Enabled = true; 
     RequiredFieldValidator1.ValidationGroup = "anything"; 
     Button1.ValidationGroup = "anything";// your save button 

    } 
    else 
    { 
     RequiredFieldValidator1.Enabled = false; 
     RequiredFieldValidator1.ValidationGroup = string.Empty; 
     Button1.ValidationGroup = string.Empty; // save button 
    } 
} 
+0

Nie masz kodu ze mną, ale nie sądzę, że to zadziała, ponieważ robimy sprawdzanie poprawności klienta, a kod za kodem nie zostanie trafiony? – ove

+0

Taki sam jak mój komentarz poniżej. Potwierdziłem, co mówi niewidoczny. Działa to do momentu uruchomienia sprawdzania poprawności. Po uruchomieniu nie można oddzwonić, aby wyłączyć walidator, chyba że go spełnisz. –

0

Spróbuj tego ...

protected void RequiredFieldValidator1_Load(object sender, EventArgs e) 
{ 
    if (CheckBox1.Checked == true) 
    { 
     RequiredFieldValidator1.Enabled = true; 
    } 
    else if (CheckBox1.Checked == false) 
    { 
     RequiredFieldValidator1.Enabled = false; 
    } 
} 
+1

Podobny do mojej odpowiedzi dla drugiej odpowiedzi. "Nie masz kodu ze mną, ale nie sądzę, że to zadziała, ponieważ przeprowadzamy walidację klienta, a kod za kodem nie zostanie trafiony?" – ove

+0

Działa to do momentu uruchomienia wyzwalacza. Po uruchomieniu nie można oddzwonić, aby wyłączyć walidator, chyba że go spełnisz. –

0

Można włączać/wyłączać RequiredFieldValidator z JavaScript/jQuery. Dla Twojego warunku, Po zaznaczeniu pola wyboru : - Po prostu wywołaj funkcję javascript, aby włączyć RequiredFieldValidator i kiedy jej odznaczenie właśnie wyłączyło RequiredFieldValidator.

W przypadku innych warunków, takich jak rozwijane zmian indeksu, zmiany wartości tekstowe i przycisk wyboru radia zmian można wywołać jej onchange, onblur, onclick odpowiednio i Po wykonaniu wymaganego warunku można włączony/wyłączonyRequiredFieldValidator.

Mam nadzieję, że ci to pomoże.

Powiązane problemy