【发布时间】:2019-08-10 04:36:57
【问题描述】:
我有一个登录表单,当页面打开时,Chrome 会自动填写凭据。但是,input 元素的onChange 事件没有被触发。
单击页面上的任意位置会使它们注册到input 的value 属性中,这正是我们所需要的。我试过event.target.click(),但没有帮助。
在 onChange 中,我将值设置为如下状态:
this.setState({ email: event.target.value })
如果email.length === 0,提交按钮将被禁用。
因此,即使页面显示已填写凭据,提交按钮仍然看起来处于禁用状态。
由于单击任何地方都会注册值,因此单击提交按钮也会在提交前注册它们。所以它完美地工作。
但这与时间无关,字段永远不会被填充。当我打开开发者控制台并检查时,值字段为空,直到我单击某处。
这里唯一的问题是该按钮看起来已禁用,因为在单击某些内容之前,电子邮件输入值是空的。有没有一个hacky解决方案?
【问题讨论】:
-
你能发布一个指向 jsfiddle 的链接吗?那会很有帮助。
-
如果您禁用基本功能,您还必须在启动时检查是否启用它。因此,在浏览器完全加载所有数据后,将“if email.length”检查放在某处,以便您检测到输入是自动填充的。基本超时可以工作。
-
它永远不会被填充。当我打开开发者控制台并检查时,值字段为空,直到我单击某处。
-
你解决过这个问题吗?我有同样的问题。页面加载并且输入(电子邮件地址)已填充,但输入 ref 的值是空的,直到与页面交互(单击即可),所以第二次渲染就可以了。我应该提到这仅在 Chrome 中; Firefox 工作正常。
-
如果能提供一些代码就更好了
标签: javascript html reactjs dom autofill