如何从Web浏览器中获取记住的表单中的数据?

时间:2014-03-21 22:20:08

标签: forms ember.js

例如,我正在创建一个登录页面。

Chrome问我是否想要记住密码,我做了,所以我让它填写表格。

我对表单进行验证,并在用户点击发送按钮或按Enter键时检查字段是否为空,但我似乎无法从Chrome填写的表单中获取数据。当浏览器填写用户的字段时,事件不会被触发,这将导致绑定到字段的属性更新。

我试图使用jQuery选择器来获取didInsertElement()中的值,但浏览器会在调用该函数后填充该字段。

App.LoginView = Ember.View.extend({
    didInsertElement: function() {
        this._super();
        var usernameInput = jQuery("#usernameInput").val();
        var passwordInput = jQuery("#passwordInput").val();
        if (usernameInput) this.set('controller.username', usernameInput);
        if (passwordInput) this.set('controller.password', passwordInput);
    }
});

修改:

我包裹了抓取Ember.run.next()

中字段值的部分
App.LoginView = Ember.View.extend({
    didInsertElement: function() {
        this._super();
        var loginView = this;
        Ember.run.next(function() {
            var usernameInput = jQuery("#usernameInput").val();
            var passwordInput = jQuery("#passwordInput").val();
            if (usernameInput) loginView.set('controller.username', usernameInput);
            if (passwordInput) loginView.set('controller.password', passwordInput);
        });
    }
});

这似乎已经成功了,但我不知道它是否是一个强大的解决方案。经过一段时间的测试后,它似乎有效。我等着发一个答案并选择它,以防其他人有更好的答案。

1 个答案:

答案 0 :(得分:0)

对于这种情况,您可以在用户点击“发送”按钮(或按Enter)后检查空虚。