2017-12-05 3 views
0

今私は2つの入力:ユーザー名とパスワードを持つフォームを持っています。私が手動で入力した場合、私の検証機能が値を受け取ることができます。ただし、値がbroswerの自動入力機能で満たされている場合。 Emberはイベントが発生しないため値を取得できません。 は、だから私は(https://stackoverflow.com/questions/22324473/browser-autofill-databindingから)このコードを持っている:Emberを使ってフォームから自動入力されたユーザー名/パスワードを読み取る方法

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

そして、私はそれはまだ動作していない、どういうわけかapp.js

にインポートしました。自動入力でがトリガーされますか?私はわかりません。

私は値を取得するために 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でのみテストされています。

+0

こんにちは、私はフォームのコンポーネントを持っていないが、私はコントローラがあります。私はあなたのコードをコントローラでテストしましたが、動作しません。コンポーネントを使用する必要がありますか? – SwordW

+0

コントローラにも同じアプローチが適しており、コンポーネントは不要です –

関連する問題