Czy istnieje sposób, aby wpisy w dwóch polach formularza były zgodne z HTML5? A może nadal trzeba to zrobić za pomocą JavaScript? Na przykład, jeśli masz dwa pola hasła i chcesz się upewnić, że użytkownik wprowadził te same dane w każdym polu, czy są jakieś atrybuty lub inne kodowanie, które można wykonać, aby to osiągnąć?
98
Odpowiedzi:
Niezupełnie z walidacją HTML5, ale trochę JavaScript może rozwiązać problem, postępuj zgodnie z poniższym przykładem:
źródło
oninput="check(this)"
do pierwszego pola hasła oraz 2) zmianęinput.value
funkcji nadocument.getElementById('password_confirm').value
. I tak się stałoif (document.getElementById('password_confirm').value != document.getElementById('password').value)
Możesz z wyrażeniami regularnymi Wzorce wejściowe (sprawdź zgodność przeglądarki )
źródło
pattern
atrybut powinien zostać pominięty wpassword_two
polu. Jak obecnie, jeśli wpiszesz hasło, które jest krótsze niż 6 znaków wpassword_two
pole, pozostawiającpassword
puste - wyświetli sięPlease enter the same Password as above
komunikat walidacji. Co może być bardziej zagmatwane: to samo stanie się, jeśli w obu polach wpiszesz dokładnie to samo hasło, które jest krótsze niż 6 znaków.Prostym rozwiązaniem z minimalną ilością javascript jest użycie wzorca atrybutu html (obsługiwanego przez większość nowoczesnych przeglądarek). Działa to poprzez ustawienie wzorca drugiego pola na wartość pierwszego pola.
Niestety, musisz też uciec przed wyrażeniem regularnym, dla którego nie istnieje standardowa funkcja.
źródło
<input type="password" name="password" oninput="document.getElementById('confirm').pattern = this.value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')" required><input type="password" id="confirm" name="confirm" pattern="" title="Fields must match" required>
Nieczytelny jak twój, ale unika oddzielnego skryptu / funkcji.JavaScript będzie wymagany, ale ilość kodu można ograniczyć do minimum, używając
<output>
elementu pośredniczącego ioninput
modułu obsługi formularzy do wykonania porównania (wzorce i walidacja mogą rozszerzyć to rozwiązanie, ale nie są tutaj pokazane ze względu na prostotę):źródło
Nie tylko HTML5, ale trochę JavaScript
Kliknij [tutaj] https://codepen.io/diegoleme/pen/surIK
HTML
JAVASCRIPT
źródło
Odpowiedzi, które używają wzorca i wyrażenia regularnego, zapisują hasło użytkownika we właściwościach wejściowych jako zwykły tekst
pattern='mypassword'
. Będzie to widoczne tylko wtedy, gdy narzędzia programistyczne są otwarte, ale nadal nie wydaje się to dobrym pomysłem.Innym problemem związanym z używaniem wzorca do sprawdzania zgodności jest to, że prawdopodobnie będziesz chciał użyć wzorca, aby sprawdzić, czy hasło ma odpowiednią postać, np. Mieszane litery i cyfry.
Myślę też, że te metody nie będą działać dobrze, jeśli użytkownik przełączy się między wejściami.
Oto moje rozwiązanie, które używa nieco więcej JavaScript, ale wykonuje proste sprawdzenie równości, gdy dane wejściowe są aktualizowane, a następnie ustawia niestandardową ważność HTML. Oba dane wejściowe można nadal przetestować pod kątem wzorca, takiego jak format wiadomości e-mail lub złożoność hasła.
W przypadku prawdziwej strony zmieniłbyś typ danych wejściowych na „hasło”.
źródło
Jak wspomniano w innych odpowiedziach, nie ma na to sposobu w czystym HTML5.
Jeśli korzystasz już z JQuery , to powinno zrobić to, czego potrzebujesz:
źródło