Czy można użyć CSS, aby wyłączyć autouzupełnianie w elemencie formularza (w szczególności w polu tekstowym)?
Używam biblioteki tagów, która nie pozwala na element autouzupełniania i chciałbym wyłączyć autouzupełnianie bez używania JavaScript.
Możesz użyć wygenerowanego id
i name
za każdym razem, który jest inny, więc przeglądarka nie pamięta tego pola tekstowego i nie zasugeruje niektórych wartości.
Jest to przynajmniej bezpieczna alternatywa dla różnych przeglądarek, ale polecam skorzystać z odpowiedzi od RobertsonM ( autocomplete="off"
).
autocomplete="off"
będzie ignorowane w wersji przeglądarki X (bieżąca + 1). (Na przykład najnowsza przeglądarka Google Chrome ignoruje autocomplete = off.)id
, nadal zapisze go w pamięci podręcznej (tj. na dysku twardym użytkownika). Co jest okropną rzeczą zrobić z czyimś numerem karty kredytowej lub innymi poufnymi informacjami. Ponadto niepotrzebnie zaśmieca dyski twarde użytkownika. Za każdym razem, gdy odwiedzą Twoją stronę, nowy plik (podobny do pliku cookie) zostanie zapisany na ich komputerze. Po prostu spróbuj wyczyścić pamięć podręczną Chrome i zobacz, ile miejsca zwolni (jeśli nie robiłeś tego przez jakiś czas). Dlatego nazywam to okropnym pomysłem.W obecnej postaci w CSS nie ma atrybutu „autouzupełnianie wyłączone”. Jednak HTML ma do tego łatwy kod:
<input type="text" id="foo" value="bar" autocomplete="off" />
Jeśli szukasz efektora obejmującego całą witrynę, prostym rozwiązaniem byłoby posiadanie funkcji js, która przeszłaby przez wszystkie „dane wejściowe” i dodała ten znacznik lub poszukałaby odpowiedniej klasy / identyfikatora CSS.
Atrybut autouzupełniania działa dobrze w Chrome i Firefox (!), Ale zobacz także Czy istnieje poprawny sposób W3C na wyłączenie autouzupełniania w formularzu HTML?
źródło
autocomplete="anyrandominvalidvalue"
że zadziała.możesz łatwo wdrożyć przez jQuery
$('input').attr('autocomplete','off');
źródło
form
jest JEDYNĄ rzeczą, która zadziałała. Nieinput
. Dzięki.Jeśli używasz
form
, możesz wyłączyć wszystkie autouzupełnianie za pomocą,<form id="Form1" runat="server" autocomplete="off">
źródło
CSS nie ma takiej możliwości. Musisz użyć skryptów po stronie klienta.
źródło
autocomplete="false"
będzie działać w Edge. Technicznie rzecz biorąc, każda nieprawidłowa wartość może zostać zastąpiona tutaj wartością „false”.Wypróbowałem wszystkie sugerowane sposoby z tych odpowiedzi na pytania i innych artykułów w Internecie, ale i tak nie działałem. Próbowałem autocomplete = "new-random-value", autocomplete = "off" w elemencie formularza, używając skryptu po stronie klienta, jak poniżej, ale poza $ (document) .ready (), jak wspomniał jeden z użytkowników:
$(':input').on('focus', function () { $(this).attr('autocomplete', 'off') });
Znalazłem może inny priorytet w przeglądarce, który powoduje to dziwne zachowanie! Szukałem więc więcej i na koniec ponownie uważnie przeczytałem poniższe wiersze z tego dobrego artykułu :
Po prostu zadziałało. Próbowałem specjalnie w chrome i mam nadzieję, że to nadal działa i pomaga innym.
źródło
Rozwiązałem problem, dodając fałszywą nazwę autouzupełniania dla wszystkich danych wejściowych.
$("input").attr("autocomplete", "fake-name-disable-autofill");
źródło
Są na to 3 sposoby, wymieniam je, aby być lepszym ...
Sposób 1-HTML:
<input type="text" autocomplete="false" />
Sposób 2-Javascript:
document.getElementById("input-id").getAttribute("autocomplete") = "off";
3-jQuery sposób:
$('input').attr('autocomplete','off');
źródło
Dzięki rozwiązaniu @ ahhmarr udało mi się rozwiązać ten sam problem w moim środowisku Angular + ui-router , którym podzielę się tutaj dla wszystkich zainteresowanych.
W moim
index.html
dodałem następujący skrypt:<script type="text/javascript"> setTimeout(function() { $('input').attr('autocomplete', 'off'); }, 2000); </script>
Następnie, aby uwzględnić zmiany stanu, w moim kontrolerze głównym dodałem:
$rootScope.$on('$stateChangeStart', function() { $timeout(function () { $('input').attr('autocomplete', 'off'); }, 2000); });
Limity czasu mają być renderowane przez kod HTML przed zastosowaniem jquery.
Jeśli znajdziesz lepsze rozwiązanie, daj mi znać.
źródło
Nie możesz użyć CSS do wyłączenia autouzupełniania, ale możesz użyć HTML:
<input type="text" autocomplete="false" />
Technicznie rzecz biorąc, możesz zastąpić
false
dowolną nieprawidłową wartością i zadziała. To jedyne rozwiązanie, które znalazłem na iOS, które działa również w Edge.źródło
Po prostu używam
'new-password'
zamiast'off'
autouzupełniania.i też spróbuję użyć tego kodu i działa (przynajmniej z mojej strony), używam WP i GravityForm dla twoich informacji
$('input').attr('autocomplete','new-password');
źródło
$('input').attr('autocomplete','off');
źródło