Come impostare il completamento automatico = “ off ” in forma fulminea

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" e html-autocomplete="off" nel tag di input
  • Ho provato a includere autocomplette="off" e html-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"); 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *