Problemet
Jeg prøver at indstille HTML-attributten auto-complete="off"
på et inputelement med klassen slds-input
. Af en eller anden grund konverterer skabelonen altid dette til autocomplete="true"
under gengivelse.
Jeg har oprettet et brugerdefineret søgefelt for at søge efter sObjects, og derfor er browserens autofuldførelsesadfærd åbenlyst nyttigt, og hvis dette var almindelig html, kunne jeg bare medtage autocomplete
-attributten med værdien off
, men aura ser ikke ud til lad mig.
Et svar, jeg fandt, foreslog at bruge html-autocomplete="off"
, så jeg prøvede det også, og når jeg gør det, er attributten simpelthen ikke gengivet.
Hvad jeg har prøvet
- Jeg forsøgte at inkludere
autocomplete="off"
oghtml-autocomplete="off"
i inputtagget - Jeg forsøgte at inkludere
autocomplette="off"
oghtml-autocomplete="off"
i formtagget, der omgiver input-tagget - Jeg forsøgte at justere
aria-autocomplete
-værdien (det gjorde intet, ikke det jeg virkelig forventede, men jeg ville i det mindste prøve). - I denne PDF af aura docs html-attributten
autocomplete
er ikke nævnt. - Jeg har fundet en liste med understøttede HTML-tags i aura , men ingen liste over understøttede attributter
- Jeg kan ikke finde noget om denne adfærd i lyndokumenterne, og det er meget vanskeligt at google for på grund af det autofuldførte lyn / aura-element
Er der nogen måde at gøre dette på? Eller dokumentation om denne adfærd?
Kodeeksempel:
Dette:
<aura:component> <input type="text" autocomplete="off" /> </aura:component>
kommer ud i finalen HTML som denne:
<input type="text" autocomplete="true" data-aura-rendered-by="5:0">
Kommentarer
- Hvad ' s forhindrer dig i at bruge almindelig html-input? Kunne du tilføje noget kode til markeringen for at hjælpe med at reproducere.
- hvad ' stopper mig, er den måde aura (eller måske lyn) ændrer koden på. Mere kode tilføjet
- Jeg bruger autocomplete = " adgangskode " i stedet for off / on, som krom respekterer det. Chrome ignorerer typisk ellers autofuldførelse. Giv det et skud og se om det fungerer for dig
Svar
Muligt fra og med foråret 19. Se her
autofuldførelse – Kontrollerer autofyldning af feltet. Denne attribut understøttes til e-mail-, søg-, tel-, tekst- og url-inputtyper. Værdierne til og fra understøttes, men autofyldsadfærden afhænger af browseren. Når du indstiller attributten autofuldførelse, sender lynkomponenten den værdi, der skal fortolkes af browseren.
Svar
Jeg talte lige med support hos Salesforce, og det er tilsyneladende umuligt i øjeblikket.
(Jeg efterlader mit svar her ikke som det accepterede svar, fordi jeg vil have nogen til at finde dette spørgsmål, når der er en bedre mulighed og besvare det, og jeg markerer dem som accepteret.)
Løsning:
Imidlertid bruger følgende hack-løsning:
Jeg gav mit element et id og udfør denne JS:
turnOffAutocomplete : function(component) { var input = document.getElementById("id-of-the-input"); if(input.getAttribute("autocomplete") !== "off"){ input.setAttribute("autocomplete","off"); } }
Jeg udfører det ikke i init
(fordi det udføres før elementerne er gengivet), men i stedet når inputelementet er fokuseret.
Eventuelle kommentarer til forbedring af dette (så det ikke “t skal udføres hver gang input f.eks. er fokuseret) ville blive værdsat.
Kommentarer
- Flyt denne logik ind i rendereren.
Svar
Den eneste løsning, jeg fandt, var at brug en textArea med rækker = “1”
<textarea type="text" class="slds-input" rows="1" style="resize : none;" />
Du kan tilføje nogle slds
klasser for at have samme visning som en normal input.
Svar
Du kan prøve dette det “s arbejdet for mig ved hjælp af aura: id og derefter slå “autofuldførelse” fra. Du kan bruge i lysmetodens init-metode
component.find("fieldSelect").set("v.autocomplete","off");