Wymagana niestandardowa walidacja pola
Mam jeden formularz z wieloma polami wejściowymi. Umieściłem walidacje html5
<input type="text" name="topicName" id="topicName" required />
kiedy wysyłam formularz bez wypełniania tego pola tekstowego, wyświetla się domyślny komunikat, taki jak
"Please fill out this field"
Czy ktoś może mi pomóc w edycji tej wiadomości?
Mam kod javascript do edycji, ale nie działa
$(document).ready(function() {
var elements = document.getElementsByName("topicName");
for (var i = 0; i < elements.length; i++) {
elements[i].oninvalid = function(e) {
e.target.setCustomValidity("");
if (!e.target.validity.valid) {
e.target.setCustomValidity("Please enter Room Topic Title");
}
};
elements[i].oninput = function(e) {
e.target.setCustomValidity("");
};
}
})
Wyślij niestandardowe weryfikacje pocztą e-mail
Mam następujący formularz HTML
<form id="myform">
<input id="email" name="email" type="email" />
<input type="submit" />
</form>
Wiadomości z walidacją, które mi się podobają.
Wymagane pole: Wprowadź adres e-mail
Nieprawidłowy adres e-mail: „testing @ .com” nie jest prawidłowym adresem e-mail. ( tutaj wprowadzony adres e-mail wyświetlany w polu tekstowym )
Próbowałem tego.
function check(input) {
if(input.validity.typeMismatch){
input.setCustomValidity("'" + input.value + "' is not a Valid Email Address.");
}
else {
input.setCustomValidity("");
}
}
Ta funkcja nie działa poprawnie, czy masz inny sposób, aby to zrobić? Byłoby to docenione.
javascript
jquery
html
Sumit Bijvani
źródło
źródło
Odpowiedzi:
Fragment kodu
Ponieważ ta odpowiedź przyciągnęła bardzo dużo uwagi, oto ładny konfigurowalny fragment, który wymyśliłem:
Stosowanie
→ jsFiddle
Więcej szczegółów
defaultText
jest wyświetlany początkowoemptyText
jest wyświetlany, gdy wejście jest puste (zostało wyczyszczone)invalidText
jest wyświetlany, gdy dane wejściowe są oznaczone przez przeglądarkę jako nieprawidłowe (na przykład, gdy nie jest to prawidłowy adres e-mail)Do każdej z trzech właściwości można przypisać ciąg znaków lub funkcję.
Jeśli przypiszesz funkcję, może ona zaakceptować odniesienie do elementu wejściowego (węzła DOM) i musi zwrócić ciąg, który jest następnie wyświetlany jako komunikat o błędzie.
Zgodność
Przetestowano w:
Stara odpowiedź
Możesz zobaczyć starą wersję tutaj: https://stackoverflow.com/revisions/16069817/6
źródło
please fill out this field
można zmienić tę wiadomośćPlease enter email address
setCustomValidity()
puste wiadomości e-mail tylko po jednokrotnym wywołaniu zdarzenia rozmycia, więc musimy po prostu wywołać to również podczas ładowania DOM. Zobacz zaktualizowany przykład / jsFiddle.if (input.value == "") {
, aby zamiast tego przeczytaćif (input.value.trim() == "") {
- załatwia sprawę dla mnie.Możesz to po prostu osiągnąć za pomocą oninvalid atrybutu, sprawdź ten kod demonstracyjny
Demo Codepen: https://codepen.io/akshaykhale1992/pen/yLNvOqP
źródło
oninput="setCustomValidity('')"
: stackoverflow.com/a/16878766/1729850HTML:
JAVASCRIPT:
Próbny :
http://jsfiddle.net/patelriki13/Sqq8e/
źródło
Spróbuj tego:
Przetestowałem to w Chrome i FF i zadziałało w obu przeglądarkach.
źródło
<b>Error: </b> Incorrect email address
.setCustomValidity("")
nie pomaga. Czy jest jakiś inny parametr, który należy ustawić? Proszę doradź.Człowieku, nigdy nie robiłem tego w HTML 5, ale spróbuję. Spójrz na to skrzypce.
Użyłem niektórych jQuery, natywnych zdarzeń i właściwości HTML5 oraz niestandardowego atrybutu w tagu wejściowym (może to spowodować problem, jeśli spróbujesz zweryfikować swój kod). Nie testowałem we wszystkich przeglądarkach, ale myślę, że to może działać.
To jest kod JavaScript do walidacji pola z jQuery:
Miły. Oto prosty formularz html:
Atrybut
requiredmessage
jest atrybutem niestandardowym, o którym mówiłem. Możesz ustawić swoją wiadomość dla każdego wymaganego pola, ponieważ jQuery pobierze z niego, gdy wyświetli komunikat o błędzie. Nie musisz ustawiać każdego pola bezpośrednio w JavaScript, jQuery zrobi to za Ciebie. To wyrażenie regularne wydaje się być w porządku (przynajmniej blokuje twoje[email protected]
! Haha)Jak widać na skrzypcach, wykonuję dodatkową walidację zdarzenia formularza przesyłania ( dotyczy to również document.ready ):
Mam nadzieję, że to zadziała lub pomoże ci w tym.
źródło
data-
przedrostka; npdata-requiredMessage
. W jQuery jest to dostępne za pomocą$(element).data('requiredMessage')
; Nie znam standardowego interfejsu DOM od początku mojej głowy.To działa dobrze dla mnie:
i formularz, z którym go używam (obcięty):
źródło
Możesz to zrobić, ustawiając detektor zdarzeń dla „nieprawidłowego” dla wszystkich wejść tego samego typu lub tylko jednego, w zależności od tego, czego potrzebujesz, a następnie skonfiguruj odpowiednią wiadomość.
Drugi element skryptu, wiadomość dotycząca ważności, zostanie zresetowana, ponieważ w innym przypadku nie będzie możliwe przesłanie formularza: na przykład zapobiega to wywołaniu wiadomości nawet po poprawieniu adresu e-mail.
Nie musisz też konfigurować pola wejściowego zgodnie z wymaganiami, ponieważ „nieprawidłowe” zostanie uruchomione, gdy zaczniesz wpisywać dane wejściowe.
Oto skrzypce do tego: http://jsfiddle.net/napy84/U4pB7/2/ Mam nadzieję, że to pomoże!
źródło
Użyj atrybutu „tytuł” w każdym znaczniku wejściowym i napisz na nim wiadomość
źródło
Wystarczy pobrać element i użyć metody setCustomValidity.
Przykład
źródło
możesz po prostu użyć atrybutu oninvalid = " , z bingingiem this.setCustomValidity () eventListener!
Oto moje kody demo! (Możesz je uruchomić, aby sprawdzić!)
link referencyjny
http://caniuse.com/#feat=form-validation
https://www.w3.org/TR/html51/sec-forms.html#sec-constraint-validation
źródło
Możesz dodać ten skrypt do wyświetlania własnej wiadomości.
W przypadku innych weryfikacji, takich jak niezgodność wzorca, możesz dodać dodatkowy warunek if else
lubić
istnieją inne warunki ważności, takie jak rangeOverflow, rangeUnderflow, stepMismatch, typeMismatch, valid
źródło