Co to jest dyskretna walidacja jQuery?

148

Wiem, czym jest wtyczka jQuery Validation. Wiem, że biblioteka jQuery Unobtrusive Validation została stworzona przez firmę Microsoft i jest zawarta w strukturze ASP.NET MVC. Ale nie mogę znaleźć ani jednego źródła online, które wyjaśniałoby, co to jest. Jaka jest różnica między standardową biblioteką walidacji jQuery a wersją „dyskretną”?

user1438940
źródło
2
dyskretna walidacja doda atrybuty data-val -... do HTML, dzięki czemu możesz odczytać walidację nawet w źródle HTML.
Preben Huybrechts,
3
Wydaje mi się, że odpowiedź na twoje pytanie została wyjaśniona tutaj: bradwilson.typepad.com/blog/2010/10/… Wyjaśnia różnicę między tym, co się dzieje, gdy funkcja Unobtrusive jest włączona lub wyłączona.
Tommy

Odpowiedzi:

123

Brad Wilson ma kilka świetnych artykułów na temat dyskretnego sprawdzania poprawności i dyskretnego Ajaxa .
Jest to również bardzo ładnie pokazane w tym filmie Pluralsight w sekcji „AJAX i JavaScript”.

Zasadniczo, jest to po prostu walidacji JavaScript że nie zanieczyszcza swój kod źródłowy z własnym walidacji kodu. Odbywa się to poprzez wykorzystanie data-atrybutów w HTML.

bertl
źródło
Czy możesz nam powiedzieć o ulepszeniach wprowadzonych w mvc3 w celu dyskretnej weryfikacji?
wwcdwdcw
Link do wideo jest uszkodzony.
Misha Moroshko,
Dziękuję @MishaMoroshko za wskazanie tego. Na razie nie mogłem znaleźć żadnej alternatywy w Pluralsight, więc usunąłem link. Zmienię post ponownie, gdy tylko będę miał zastępcę.
bertl
Przydałoby się kilka przykładów kodu. Ponieważ Twoja odpowiedź nie jest zbyt pomocna, większość ludzi przyjeżdża tutaj, szukając szybkich rozwiązań i próbek kodu, a nie linków do artykułów, z czasem mogą się zepsuć, są ogólnie dobre jako odniesienie, gdy zobaczysz przykładowy kod. Wolę 2 następne odpowiedzi.
Owen
107

Dyskretnie:

  • Nie musisz wywoływać metody validate ().
  • Określasz wymagania za pomocą atrybutów danych (data-val, data-val-required itp.)

Przykład walidacji jquery :

<input type="text" name="email" class="required">
<script>
        $(function () {
            $("form").validate();
        });
</script>

Jquery Validate Unobtrusive Przykład :

<input type="text" name="email" data-val="true" 
data-val-required="This field is required.">  

<div class="validation-summary-valid" data-valmsg-summary="true">
    <ul><li style="display:none"></li></ul>
</div>
James Lawruk
źródło
4
Dziękuję, próbowałem użyć Ctrl-F, aby znaleźć wywołanie valdiate () w jakimś kodzie, nad którym musiałem popracować. Zastanawiałem się, dlaczego nie mogłem go znaleźć
bio595
2
Tak, „dyskretny” wydaje się być eufemizmem określającym „nieodkryty”.
ReactingToAngularVues
18

Dla wyjaśnienia, oto bardziej szczegółowy przykład demonstrujący walidację formularza przy użyciu jQuery Validation Unobtrusive.

Oba używają następującego JavaScript z jQuery:

  $("#commentForm").validate({
    submitHandler: function(form) {
      // some other code
      // maybe disabling submit button
      // then:
      alert("This is a valid form!");
//      form.submit();
    }
  });

Główne różnice między tymi dwoma wtyczkami to atrybuty używane w każdym podejściu.

Walidacja jQuery

Po prostu użyj następujących atrybutów:

  • Ustaw wymagany w razie potrzeby
  • Ustaw typ dla prawidłowego formatowania (e-mail itp.)
  • Ustaw inne atrybuty, takie jak rozmiar (minimalna długość itp.)

Oto formularz ...

<form id="commentForm">
  <label for="form-name">Name (required, at least 2 characters)</label>
  <input id="form-name" type="text" name="form-name" class="form-control" minlength="2" required>
  <input type="submit" value="Submit">
</form>

jQuery Validation Unobtrusive

Potrzebne są następujące atrybuty danych:

  • data-msg-required = "To jest wymagane."
  • data-rule-required = "prawda / fałsz"

Oto formularz ...

<form id="commentForm">
  <label for="form-x-name">Name (required, at least 2 characters)</label>
  <input id="form-x-name" type="text" name="name" minlength="2" class="form-control" data-msg-required="Name is required." data-rule-required="true">
  <input type="submit" value="Submit">
</form>

Na podstawie jednego z tych przykładów, jeśli wymagane pola formularza zostały wypełnione i spełniają dodatkowe kryteria atrybutów, pojawi się komunikat informujący, że wszystkie pola formularza zostały sprawdzone. W przeciwnym razie w pobliżu obraźliwych pól formularza pojawi się tekst wskazujący na błąd.

Referencje: - jQuery Validation: https://jqueryvalidation.org/documentation/

Ryszarda Należyńskiego
źródło
7

jQuery Validation Unobtrusive Native to kolekcja rozszerzeń pomocniczych HTML ASP.Net MVC. Wykorzystują one natywną obsługę walidacji jQuery dla walidacji opartej na atrybutach danych HTML 5. Microsoft dostarczył jquery.validate.unobtrusive.js z powrotem z MVC 3. Zapewnił sposób na zastosowanie walidacji modelu danych po stronie klienta przy użyciu kombinacji atrybutów jQuery Validation i HTML 5 (to jest „dyskretna” część).

bimal
źródło