Problem
Próbuję ustawić atrybut HTML auto-complete="off"
na elemencie wejściowym z klasą slds-input
. Z jakiegoś powodu szablon zawsze konwertuje to na autocomplete="true"
podczas renderowania.
Utworzyłem niestandardowe pole wyszukiwania do wyszukiwania obiektów sObject, więc autouzupełnianie przeglądarki jest oczywiście nieprzydatny. Gdyby to był zwykły kod HTML, mógłbym po prostu dołączyć atrybut autocomplete
z wartością off
, ale aura nie wydaje się pozwól mi.
Jedna odpowiedź, którą znalazłem, sugerowała użycie html-autocomplete="off"
, więc próbowałem też tego, a kiedy to robię, atrybut po prostu nie jest renderowany.
Czego próbowałem
- Próbowałem, w tym
autocomplete="off"
ihtml-autocomplete="off"
w tagu input - Próbowałem dołączyć
autocomplette="off"
ihtml-autocomplete="off"
do tagu formularza otaczającego tag input - Próbowałem dostosować wartość
aria-autocomplete
(to nic nie dało, nie żebym się tego naprawdę spodziewał, ale chciałem przynajmniej spróbować). - W ten plik PDF dokumentacji aury atrybut html
autocomplete
nie został wymieniony. - Znalazłem listę obsługiwane tagi HTML w aurze , ale nie ma listy obsługiwanych atrybutów
- Nie mogę znaleźć nic na temat tego zachowania w dokumentach lightning i jest to bardzo trudne do Google z powodu autouzupełniania elementu błyskawicy / aury
Czy jest jakiś sposób, aby to zrobić? Albo dokumentacja dotycząca tego zachowania?
Przykładowy kod:
To:
<aura:component> <input type="text" autocomplete="off" /> </aura:component>
pojawi się w finale HTML w ten sposób:
<input type="text" autocomplete="true" data-aura-rendered-by="5:0">
Komentarze
- Co ' s powstrzymuje Cię przed używaniem zwykłych danych wejściowych HTML? Czy mógłbyś dodać jakiś kod do znaczników, aby pomóc odtworzyć.
- co ' powstrzymuje mnie, to sposób, w jaki aura (a może błyskawica) modyfikuje kod. Dodano więcej kodu
- Używam autocomplete = " hasło " zamiast wyłączania / włączania, ponieważ Chrome to przestrzega. W przeciwnym razie Chrome zazwyczaj ignoruje autouzupełnianie. Spróbuj i zobacz, czy zadziała w Twoim przypadku
Odpowiedź
Możliwe od wiosny 19 lat. Patrz: tutaj
autouzupełnianie – steruje automatycznym wypełnianiem pola. Ten atrybut jest obsługiwany w przypadku typów danych wejściowych e-mail, wyszukiwania, tel, tekstu i adresu URL. Wartości on i off są obsługiwane, ale zachowanie autouzupełniania zależy od przeglądarki. Po ustawieniu atrybutu autocomplete komponent lightning: input przekazuje wartość w celu jej zinterpretowania przez przeglądarkę.
Odpowiedź
Właśnie rozmawiałem z pomocą techniczną w Salesforce i najwyraźniej jest to obecnie niemożliwe.
(Zostawiam tutaj swoją odpowiedź nie jako zaakceptowaną, ponieważ chcę, aby ktoś znalazł to pytanie, gdy jest lepsza opcja, i odpowie na nie, a oznaczę je jako zaakceptowane.)
Obejście:
Jednak używam następującego obejścia:
Dałem mojemu elementowi identyfikator i wykonuję ten kod JS:
turnOffAutocomplete : function(component) { var input = document.getElementById("id-of-the-input"); if(input.getAttribute("autocomplete") !== "off"){ input.setAttribute("autocomplete","off"); } }
Wykonuję go nie w init
(ponieważ jest to wykonywane przed wyrenderowaniem elementów), ale zamiast tego, gdy element wejściowy jest skupiony.
Wszelkie komentarze poprawiające to (więc nie na przykład „nie trzeba wykonywać za każdym razem, gdy dane wejściowe są skoncentrowane) będą mile widziane.
Komentarze
- Przenieś tę logikę do renderera.
Odpowiedź
Jedynym rozwiązaniem, które znalazłem, było użyj obiektu textArea z wierszami = „1”
<textarea type="text" class="slds-input" rows="1" style="resize : none;" />
Możesz dodać niektóre klasy slds
, aby były wyświetlane tak samo jak normalne wejście.
Odpowiedź
Możesz spróbować pracował dla mnie, używając aura: id, a następnie wyłączając „autouzupełnianie”. Możesz użyć w metodzie inicjalizacji kontrolera oświetlenia
component.find("fieldSelect").set("v.autocomplete","off");