Problemet
Jag försöker ställa in HTML-attributet auto-complete="off"
på ett ingångselement med klassen slds-input
. Av någon anledning konverterar mallen alltid detta till autocomplete="true"
vid rendering.
Jag har skapat ett anpassat sökfält för att söka efter sObjects, så webbläsarens autofullständiga beteende är uppenbarligen ohjälpsamt, och om detta var vanlig html kunde jag bara inkludera autocomplete
attributet med värdet off
, men aura verkar inte låt mig.
Ett svar jag hittade föreslog att jag skulle använda html-autocomplete="off"
, så jag försökte också det, och när jag gör det attributet helt enkelt inte återges alls.
Vad jag försökt
- Jag försökte inkludera
autocomplete="off"
ochhtml-autocomplete="off"
i ingångstaggen - Jag försökte inkludera
autocomplette="off"
ochhtml-autocomplete="off"
i formuläretiketten som omger ingångstaggen - Jag försökte justera
aria-autocomplete
-värdet (det gjorde ingenting, inte det jag verkligen förväntade mig, men jag ville åtminstone försöka). - I denna PDF av aura docs nämns inte html-attributet
autocomplete
. - Jag har hittat en lista med HTML-taggar som stöds i aura , men ingen lista över attribut som stöds
- Jag kan inte hitta något om detta beteende i blixtdokumenten, och det är väldigt svårt att google för på grund av autoslutförande blixt / aura-element
Finns det något sätt att göra detta? Eller dokumentation om detta beteende?
Kodexempel:
Detta:
<aura:component> <input type="text" autocomplete="off" /> </aura:component>
kommer ut i finalen HTML som detta:
<input type="text" autocomplete="true" data-aura-rendered-by="5:0">
Kommentarer
- Vad ' s hindrar dig från att använda vanlig html-inmatning? Kan du lägga till lite kod i markeringen för att hjälpa till att reproducera.
- vad ' som hindrar mig är hur aura (eller kanske blixt) ändrar koden. Mer kod tillagd
- Jag använder autocomplete = " lösenord " istället för av / på som krom respekterar det. Chrome ignorerar vanligtvis autoslutförande annars. Ge det en chans och se om det fungerar för dig
Svar
Möjligt från och med våren 19. Se här
autoslutför – Kontrollerar autofyllning av fältet. Detta attribut stöds för e-post-, sök-, tel-, text- och webbadressinmatningstyper. Värdena på och av stöds, men autofyllbeteendet beror på webbläsaren. När du ställer in attributet autoslutförande skickar lightning: input-komponenten värdet för att tolkas av webbläsaren.
Svar
Jag pratade bara med support på Salesforce och tydligen är det för närvarande omöjligt.
(Jag lämnar mitt svar här inte som det accepterade svaret eftersom jag vill att någon ska hitta den här frågan när det finns ett bättre alternativ och svara på den så markerar jag dem som godkända.)
Lösning:
Men jag använder följande hack-lösning:
Jag gav mitt element ett ID och kör denna JS:
turnOffAutocomplete : function(component) { var input = document.getElementById("id-of-the-input"); if(input.getAttribute("autocomplete") !== "off"){ input.setAttribute("autocomplete","off"); } }
Jag kör det inte i init
(eftersom det körs innan elementen har renderats) utan istället när inmatningselementet är fokuserat.
Eventuella kommentarer för att förbättra detta (så det gör det inte ”t måste exekveras varje gång ingången är fokuserad, till exempel) skulle uppskattas.
Kommentarer
- Flytta den här logiken till renderaren.
Svar
Den enda lösningen jag hittade var att använd textArea med rader = ”1”
<textarea type="text" class="slds-input" rows="1" style="resize : none;" />
Du kan lägga till några slds
-klasser för att ha samma visning som en normal ingång.
Svar
Du kan prova det här arbetade för mig genom att använda aura: id och sätt sedan av ”autoslutför”. Du kan använda i init-metoden för belysningsstyrningen
component.find("fieldSelect").set("v.autocomplete","off");