2011-11-17 13 views
5

Widziałem już wiele pytań na ten temat, ale jestem zdumiony! Proszę pomóż!Weryfikator niestandardowy wystrzeliwuje, ale nie zapobiega odreagowaniu

Mam niestandardowy weryfikator. Wystrzeliwuje, ale nie zapobiega odświeżeniu. Proszę, pomóż mi w tym! Widzę, że console.log rejestruje się przed postem. Ale i tak odpisuje. Jak zapobiec odrzutowi?

Próbowałem dodać kontrolkę do sprawdzania poprawności i sprawdzania poprawności pustego tekstu równego true. Próbowałem też dodanie e.preventdefault, który nie działa :(

Jak mogę zapobiec odświeżenie strony?

<script type="text/javascript"> 
//<![CDATA[ 
function validateWhyUnlikely(source, args) { 
    console.log(1); 
    args.isValid = false; 
} 
//]]> 

<asp:TextBox ID="txtWhyUnlikely" runat="server" Rows="4" cols="20" 
      CssClass="surveyTextArea" /> 
<asp:CustomValidator runat="server" ID="cfvWhyUnlikley" ErrorMessage="Please provide a reason since you rated an item as unlikely to provide." 
     CssClass="surveyError surveySmallIndent" Display="Dynamic" 
     ClientValidationFunction="validateWhyUnlikely" /> 
<asp:Button ID="btnSubmit" runat="server" Text="Submit" CssClass="smallSpecial" OnClick="btnSubmit_Click" /> 


jQuery(document).ready(function() { 
    jQuery('#<%= btnSubmit.ClientID %>').click(function (e) { 
     if (Page.IsValid == false) { 
      console.log(false); 
      e.preventDefault(); 
      return false; 
     } 
    }); 
}); 

Odpowiedz

4

Wszystko wygląda ok althought Nie jestem pewien, dlaczego jesteś dołączanie funkcji Click do przycisku przesyłania. Usunąłbym to i przetestowałam, ponieważ może to być przesłonięcie domyślnego zachowania.nieustępne

Również myślę, że trzeba wykorzystać właściwość IsValid:

args.IsValid = false; 
+0

Dzięki ... Chciałbym skompilować JavaScript! Nie ma błędów, nie widzisz tego błędu obudowy @Kelsey – Hoppe

3

ja też w obliczu tego problemu, starałem się dodać niestandardowy walidator do dropdownlist który miał selectedIndexChange wydarzenia z nim związane. Po tym, jak podałem niepoprawną wartość dla rozwijania, udało mi się wysłać komunikat o błędzie, który podałem w Custom Validator, ale zaraz po tym, jak miało miejsce odświeżenie.

Jednak dodanie tej właściwości CausesValidation="true" do kontrolki rozwijanej listy rozwiązało mój problem.

Odświeżenie nie nastąpiło na nieprawidłowej wartości po dodaniu tej właściwości do mojego menu rozwijanego.

+1

Proszę oznaczyć go jako odpowiedź, jeśli pomaga. – Shalini

1

Wystąpił również ten problem.

Co zrobiłem było w procedurze C#, który został nazwany przez przycisk u góry dodałem

if (IsValid == false) 
     return; 

nie mogę przestać go wykonując odświeżenie więc wydawało mi się jedynym rozwiązaniem.

0

Publikowanie tego jako może pomóc komuś, kto zachowuje się tak samo dziwacznie.

Początkowo miałem ten sam problem co tytuł tego wpisu. Sprawdziłem wszystkie sugestie tutaj, ale mój kod wydawał się być w porządku.

Aby to naprawić, zastąpiłem kontrolkę sprawdzania poprawności przyczyn <asp:Button.. za pomocą <button... Nie wiem, dlaczego tak się dzieje, ale szczęśliwy, że teraz działa.

HTH

1

Jesteś misssing ControlToValidate="txtWhyUnlikely"

0

< Tagi brakuje prawidłowy kod JavaScript, aby potwierdzić. < asp: Przycisk ma poprawny renderowany javascript.

Dodałem to żadnych tagów przycisk:

btn.Attributes("onclick") = StringFmt("if(!Page_ClientValidate(''))return false;") 

i że rozwiązał problem po tylną. Po stronie klienta nie wykryto problemu.

1

Jeśli pomaga innym osobom, miałem grupę sprawdzania poprawności, w której zapomniałem dodać przycisk.

Upewnij się, że dodano przycisk, pole tekstowe i weryfikator do tej samej grupy sprawdzania poprawności, aby zapobiec odświeżeniu.

0

I rozwiązać ten problem poprzez utworzenie zmiennej:

Boolean fieldIsValid = true; 

i przy niestandardowych wypowiedzi zatwierdzającego Chciałbym zmienić wartość, jeśli argumenty nie były prawdziwe:

if(args.IsValid == false) 
      { 
       fieldIsValid = false; 
      } 
      else 
      { 
       fieldIsValid = true; 
      } 

Wtedy też umieścić w metodzie kliknij:

protected void submit_Click(object sender, EventArgs e) 
     { 
      if (fieldIsValid) 
      { 
       //submit my things 
      } 
     } 
Powiązane problemy