Ninguna de las opciones aquí (autocompletar, data-lpignore, etc.) impidió que LastPass rellene automáticamente mis campos de formulario por desgracia. Adopté un enfoque más complejo del problema y establecí asincrónicamente los name
atributos de entrada a través de JavaScript. La siguiente función dependiente de jQuery (invocada desde el controlador de eventos onsubmit del formulario) hizo el truco:
function setInputNames() {
$('#myForm input').each(function(idx, el) {
el = $(el);
if (el.attr('tmp-name')) {
el.attr('name', el.attr('tmp-name'));
}
});
}
$('#myForm').submit(setInputNames);
En el formulario, simplemente usé tmp-name
atributos en lugar de los name
atributos equivalentes . Ejemplo:
<form id="myForm" method="post" action="/someUrl">
<input name="username" type="text">
<input tmp-name="password" type="password">
</form>
Actualizar 2019-03-20
Todavía me encontré con dificultades con lo anterior debido a AngularJS dependiendo de los campos de formulario que tienen name
atributos para que ngMessages presente correctamente los mensajes de error de validación de campo.
Finalmente, la única solución que pude encontrar para evitar que LastPass llene los campos de contraseña en mi formulario de Cambio de contraseña fue:
- Evite usar por
input[type=password]
completo, Y
- no tener 'contraseña' en el nombre del campo
Como necesito poder enviar el formulario normalmente en mi caso, aún empleé mi solución original para actualizar los nombres de campo 'justo a tiempo'. Para evitar el uso de campos de ingreso de contraseña, encontré que esta solución funcionó muy bien.
type="hidden"
lugar de ocultarlo con CSS