Il problema
Sto cercando di impostare lattributo HTML auto-complete="off"
su un elemento di input con la classe slds-input
. Per qualche motivo il modello lo converte sempre in autocomplete="true"
durante il rendering.
Ho creato un campo di ricerca personalizzato per cercare sObjects, quindi il comportamento di completamento automatico del browser è ovviamente inutile, e se questo fosse un codice HTML normale potrei semplicemente includere lattributo autocomplete
con il valore off
, ma aura non sembra permettimi.
Una risposta che ho trovato suggeriva di usare html-autocomplete="off"
, quindi ho provato anche quello, e quando lo faccio lattributo semplicemente non viene visualizzato affatto.
Quello che ho “provato
- Ho provato a includere
autocomplete="off"
ehtml-autocomplete="off"
nel tag di input - Ho provato a includere
autocomplette="off"
ehtml-autocomplete="off"
nel tag del modulo che circonda il tag di input - Ho provato a modificare il valore
aria-autocomplete
(non ha funzionato, non che me lo aspettassi, ma volevo almeno provare). - In questo PDF dei documenti aura lattributo html
autocomplete
non è menzionato. - Ho “trovato un elenco di supportava i tag HTML in aura , ma nessun elenco di attributi supportati
- Non riesco” a trovare nulla su questo comportamento nei documenti fulminei, ed è molto difficile a Google per a causa del completamento automatico dellelemento fulmine / aura
Cè un modo per farlo? O la documentazione su questo comportamento?
Esempio di codice:
Questo:
<aura:component> <input type="text" autocomplete="off" /> </aura:component>
uscirà nel finale HTML come questo:
<input type="text" autocomplete="true" data-aura-rendered-by="5:0">
Commenti
- Cosa ' ti impedisce di utilizzare il normale input html? Potresti aggiungere del codice al markup per riprodurlo.
- Ciò che ' mi impedisce è il modo in cui laura (o forse il fulmine) modifica il codice. Altro codice aggiunto
- Utilizzo autocomplete = " password " invece di off / on come rispetta Chrome. In caso contrario, Chrome ignora il completamento automatico. Provaci e vedi se funziona per te
Rispondi
Possibile a partire dalla primavera 19. Vedi qui
completamento automatico: controlla la compilazione automatica del campo. Questo attributo è supportato per i tipi di input email, ricerca, telefono, testo e URL. I valori on e off sono supportati, ma il comportamento della compilazione automatica dipende dal browser. Quando imposti lattributo di completamento automatico, il componente lightning: input passa il valore per essere interpretato dal browser.
Risposta
Ho appena parlato con lassistenza di Salesforce e apparentemente questo è attualmente impossibile.
(Lascio la mia risposta qui non come risposta accettata perché ho voglio che qualcuno trovi questa domanda quando cè unopzione migliore e risponda e io la contrassegnerò come accettata.)
Soluzione:
Tuttavia, io sto usando la seguente soluzione per hacker:
Ho dato al mio elemento un id ed eseguo questo JS:
turnOffAutocomplete : function(component) { var input = document.getElementById("id-of-the-input"); if(input.getAttribute("autocomplete") !== "off"){ input.setAttribute("autocomplete","off"); } }
Lo sto eseguendo non in init
(perché viene eseguito prima che gli elementi siano stati visualizzati) ma invece quando lelemento di input è focalizzato.
Eventuali commenti per migliorare questo (quindi non “ad esempio, deve essere eseguito ogni volta che linput è focalizzato) sarebbe apprezzato.
Commenti
- Sposta questa logica nel renderer.
Risposta
Lunica soluzione che ho trovato è stata quella di usa una textArea con rows = “1”
<textarea type="text" class="slds-input" rows="1" style="resize : none;" />
Puoi aggiungere alcune slds
classi per avere la stessa visualizzazione di un input normale.
Risposta
Puoi provare questo “s ha funzionato per me utilizzando laura: id e quindi disattivato “autocomplete”. Puoi utilizzare il metodo init del controller dellilluminazione
component.find("fieldSelect").set("v.autocomplete","off");