5

Czy istnieje sposób, aby podłączyć się do MVC3 dyskretnej weryfikacji na kliencie, zanim dane zostaną przesłane do metody zdalnej, a po zwróceniu wyniku z metody zdalnej?Haczyki zdarzeń dla MVC dyskretne zdalne sprawdzanie poprawności

Próbuję powiedzieć zdalnego weryfikatora, aby wykonać tylko sprawdzanie poprawności, jeśli kliknął przycisk Wyślij. Normalne zachowanie polega na kilkukrotnym sprawdzaniu, na przykład podczas naciskania klawisza, rozmycia itp. Nie jest to dobre, ponieważ metoda walidacji musi wywoływać operację non-idempotent. Muszę się upewnić, że ta metoda jest wywoływana tylko wtedy, gdy użytkownik kliknął przycisk przesyłania.

Jeśli mógłbym podłączyć się do wcześniejszego wydarzenia, mógłbym ustawić pole w formularzu, które oznaczałoby przycisk przesyłania jako kliknięty lub nie. Jednak musiałbym zresetować tę flagę po tym, jak metoda zdalna zwróci wynik sprawdzania poprawności.

Jakieś inne sugestie? Ta funkcja służy do sprawdzania poprawności hasła przy użyciu metody dostawcy ASP.NET Membership Provider o nazwie Membership.ValidateUser(string username, string password). Metoda ta zwiększamy FailedPasswordAttemtCount każdym razem, gdy hasło jest nieprawidłowe wysłany, więc nie chcę go wykonać podczas rozmycie, naciśnięcie klawisza itp

Odpowiedz

7

Można zastąpić domyślne opcje sprawdzania poprawności dla aktualnej strony:

$.validator.setDefaults({ 
    onkeyup: false, 
    onfocusout: false, 
    onsubmit: true 
}); 
+0

Czy przesłanianie ustawień domyślnych nie wpływa na inne formularze? Czy może ustawić zakres domyślny tylko na aktualnie ładowanej stronie? – danludwig

+0

Tylko zakres aktualnie ładowanej strony. –

+0

To naprawdę jest najlepsze rozwiązanie, dzięki. Dla zaspokojenia mojej ciekawości jest odpowiedź na moje pytanie "Nie ma żadnych" lub "To nie jest łatwe"? – danludwig

0

Powyższe rozwiązanie nie rozwiązało tego problemu. W jakiś sposób ustawienie weryfikatora nie było ustawione. Tak więc zaimplementowałem i zadziałało:

$(function() { 
    var settings = $.data($('form')[0], 'validator').settings; 
    settings.onkeyup = false; 
}); 
Powiązane problemy