W moich formularzach chciałbym na przykład używać nowych typów formularzy HTML5 <input type="url" />
( więcej informacji o typach tutaj ).
Problem polega na tym, że Chrome chce być bardzo pomocny i sprawdzać te elementy, chyba że jest do bani. Jeśli nie powiedzie się wbudowane sprawdzanie poprawności, nie będzie żadnego komunikatu ani wskazania innego niż element, na który ma być ustawiony fokus. Wstępnie wypełniam elementy URL "http://"
, więc moja własna walidacja traktuje te wartości jako puste ciągi, jednak Chrome je odrzuca. Gdybym mógł zmienić reguły sprawdzania poprawności, to też by działało.
Wiem, że mógłbym po prostu wrócić do używania, type="text"
ale chcę miłych ulepszeń przy użyciu tych nowych typów ofert (np .: automatycznie przełącza się na niestandardowy układ klawiatury na urządzeniach mobilnych):
Czy istnieje sposób na wyłączenie lub dostosowanie automatycznej weryfikacji?
$('[inputmode]').each(function () { this.attr({type: this.attr('inputmode'), novalidate: true}) });
inputmode
byś. Robiąc to po swojemu, nadal nie możesz (na przykład) odczytać wartości nienumerycznych, które użytkownik wpisuje w polu tekstowym typu number
. Na przykład spróbuj wpisać coś nienumerycznego w polu tekstowym w tym skrzypce i kliknij przycisk.
<input type='number'>
ogóle nie akceptuje wartości nienumerycznych?
inputmode
atrybucie , który - jeśli rozumiem, co poprawnie czytam - może zostać użyty do określenia, jaki typ klawiatury powinien być oferowany użytkownikowi podczas interakcji z polem, bez narzucania żadnych reguł sprawdzania poprawności. W pewnym momencie użycieinputmode
atrybutu zamiasttype
atrybutu będzie prawdopodobnie poprawnym rozwiązaniem tego problemu - ale jeszcze nie.