如何使用 Ember 从表单中读取自动填写的用户名/密码

Posted

技术标签:

【中文标题】如何使用 Ember 从表单中读取自动填写的用户名/密码【英文标题】:How to read auto-filled username/password from a form using Ember 【发布时间】:2017-12-05 07:09:37 【问题描述】:

现在我有一个有两个输入的表单:用户名和密码。如果我手动输入它们,我的验证功能可以获取这些值。但是,如果这些值是由 broswer 的自动填充功能填充的。由于未触发任何事件,Ember 无法获取该值。 所以我有这个代码(来自https://***.com/questions/22324473/browser-autofill-databinding):

import Ember from 'ember';
export default Ember.TextField.reopen(
  triggerEvents: function () 
    Ember.run.next(this, function () 
      this.$().trigger("change");
    );
  .on("didInsertElement")
);

我将它导入到 app.js 中

不知何故,它仍然无法正常工作。 didInsertElement 会被自动填充触发吗?我不确定。

我使用this.get('xxx') 来获取值。

如果您有更好的方法让 ember 检测自动填充。我对此持开放态度。

【问题讨论】:

【参考方案1】:

只需为表单字段添加观察者。 示例:

// app/components/test-form.js
import Component from '@ember/component';
    export default Component.extend(
      isChanged: Ember.observer('login', 'password', function() 
        this.validate();
      ),
      validate() 
        let login = this.get('login');
        let password = this.get('password');
        console.log('validate', login, password);
      ,
      actions: 
        submit() 
          console.log('submit');
        
      
    );


// app/templates/components/test-form.hbs
<form>
  <label>Login
  input type="text" value=login change='validate' 
  </label>
  <label>Password
  input type="password" value=password change='validate' 
  </label>
  <button action 'submit'>Click</button>
</form>

PS。仅在 Firefox 中测试。

【讨论】:

嗨,我没有表单的组件,但我有一个控制器。我在控制器中测试了您的代码,但它不起作用。我必须使用组件吗? 同样的方法也适用于控制器,不需要组件

以上是关于如何使用 Ember 从表单中读取自动填写的用户名/密码的主要内容,如果未能解决你的问题,请参考以下文章

颤振:如何在登录表单中自动填写密码

如何使用Google自动完成和Vue js来自动填写地址?

如何使用“主题我的登录”插件在 wordpress 登录表单中自动填写字段?

Brower 的自动填充功能在 ember.js 表单中不起作用

如何根据唯一值和另一个表单中的值自动填写表单中的字段

用户通过PHP填写表单后如何自动生成页面?