相关疑难解决方法(0)

停用Chrome自动填充功能

我在几种形式上遇到了chrome自动填充行为的问题.

表单中的字段都有非常常见和准确的名称,例如"email","name"或"password",它们也有autocomplete="off"set.

自动填充标记已成功禁用自动填充行为,其中在您开始输入时会显示值下拉列表,但未更改Chrome自动填充字段的值.

这种行为是可以的,除了chrome正在填充输入错误,例如用电子邮件地址填充电话输入.客户抱怨这一点,因此经过验证可以在多种情况下进行验证,而不是因为我在我的机器上本地完成了某些事情.

我能想到的唯一当前解决方案是动态生成自定义输入名称,然后在后端提取值,但这似乎是一个非常讨厌这个问题的方法.是否有任何标签或怪癖会改变可用于解决此问题的自动填充行为?

html forms google-chrome autocomplete autofill

620
推荐指数
29
解决办法
60万
查看次数

Angular 2和浏览器自动填充

我正在使用Angular反应形式实现登录页面.如果表单无效,则禁用"登录"按钮.

import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';

@Component({
    selector: 'signin',
    templateUrl: './signin.component.html'
})
export class SignInComponent implements OnInit {
    private signInForm: FormGroup;

    constructor(private formBuilder: FormBuilder) { }

    ngOnInit() {
        this.buildForm();
    }

    private buildForm(): void {
        this.signInForm = this.formBuilder.group({
            userName: ['', [Validators.required, Validators.maxLength(50)]],
            password: ['', [Validators.required, Validators.maxLength(50)]]
        });

        this.signInForm.valueChanges
            .subscribe((data: any) => this.onValueChanged(data));

        this.onValueChanged();
    }

    private onValueChanged(data?: any) {
        console.log(data);
    }
Run Code Online (Sandbox Code Playgroud)

因此,当我在浏览器中启动它时,我预先填充了"userName"和"passwords"字段.在控制台中,我有值'{userName:"email@email.com",密码:""}',因此按钮"login"被禁用.但是,如果我点击页面上的某个地方,它会触发onValueChanged,我会看到'{userName:"email@email.com",密码:"123456"}',并启用按钮"login".

如果我进入隐身模式.我没有预先填充的字段(它们是空的),但是当我填充(选择)值时,在控制台中我看到'{userName:"email@email.com",密码:"123456"}'和按钮"login"无需任何额外点击即可启用.

可能是他们不同的事件?自动填充和自动填充?角度与它们的作用有何不同?

解决它的最佳方法是什么?为什么onValueChanged …

autocomplete autofill typescript angular

18
推荐指数
2
解决办法
3万
查看次数