16

Robię coś podobnego do zdalnego sprawdzania poprawności, poza tym, że już wykonuję moje połączenia ręcznie za pomocą jquery i konfiguruję wszystko, co muszę skonfigurować.Ręczne ustawienie dyskretnego błędu sprawdzania poprawności w polu tekstowym

Teraz mój problem polega na tym, że jeśli chcę powiedzieć walidatorowi, że dany tekst jest nieprawidłowy (i uniemożliwia przesłanie strony, zaznacz pole tekstowe itp.). Jak zrobić to z kodu?

@Html.LabelFor(m => Model.Slug) 
@Html.TextBoxFor(m => Model.Slug) 
<span id="UrlMsg" class="field-validation-error" style="display: none;"></span> 

if (error) { 
     $('#UrlMsg').html('This name is already in use.').fadeIn('fast'); 
     //what should I do here for the rest of the validation? 
} 

Odpowiedz

48

Po pierwsze, można dodać podsumowanie walidacji:

@Html.ValidationMessageFor(m => m.Slug) 

Następnie można wywołać ręcznie walidacji jQuery/dyskretne walidacji z metodą .showError. Oto przykład:

var errorArray = {}; 
errorArray["Slug"] = 'Some error message for the Slug text box'; 
$('#SomeFormId').validate().showErrors(errorArray); 
+2

dzięki kolega, to jest to, czego potrzebowałem, działa jak czar! – Rob

+1

Ale formularz jest prawidłowy, jeśli błędy są dodawane ręcznie, tak jak to $ ("# SomeFormId") = true? –

1

Można również zrobić:

@Html.ValidationMessageFor(m => m.Slug) 

Dzięki tej funkcji w kodzie:

function setError(id, message) { 
     var span = $("span[data-valmsg-for=\"" + id + "\"]"); 
     if (span && span.length > 0) { 
      $(span).html(message); 
      if (message && message != "") { 
       $(span).removeClass("field-validation-valid"); 
       $(span).addClass("field-validation-no-valid"); 
      } else { 
       $(span).removeClass("field-validation-no-valid"); 
       $(span).addClass("field-validation-valid"); 
      } 
     } 
    } 

Następnie można ustawić błędu

setError("Slug", "errorMsg"); 
Powiązane problemy