如何以表格Sencha Touch 2获取用户名和密码的值

时间:2012-09-24 11:39:07

标签: javascript extjs sencha-touch-2

我有一个包含两个字段的表单,其中包含用户名和密码。我有一个带有处理程序的[loginbutton]。如何从登录按钮的处理程序中的字段中获取这些值,以便为Controller激活事件?

                        handler: function() {
                            var form = this.parent.parent;
                            //HOW TO GET THESE VALUES?
                            var username = form.user;
                            var password = form.password;
                            form.fireEvent('login', username, password);

                        }

使用调试器我发现这有效,但对我来说看起来是一个非常复杂的解决方案:

               handler: function() {
                    var form = this.parent.parent;
                    var fieldset = form.items.items[0];
                    var username = fieldset.innerItems[0]._component._value;
                    var password = fieldset.innerItems[1]._component._value;
                    form.fireEvent('login', username, password);

这是带有配置声明的代码。

Ext.define('AddressBook.view.Login', {
    title: "Luminizer Login",
    extend: 'Ext.form.Panel',
    xtype: 'loginForm',

    config: {
        url: 'login.php',
        standardSubmit: false,
        items: [
            {
                xtype: 'fieldset',
                title: 'MyCompony',
                instructions: 'Log in with username and password.',
                defaults: {
                    required: true,
                    labelAlign: 'left',
                    labelWidth: '40%'
                },
                items: [
                    {
                        //SCROLL DOWN FOR HANDLER
                        xtype: 'textfield',
                        name: 'name',
                        label: 'Name',
                        value: 'user',
                        autoCapitalize: false
                    },
                    {
                        xtype: 'passwordfield',
                        name: 'password',
                        label: 'Password',
                        value: 'test'
                    }
                ]
            },
            {
                xtype: 'toolbar',
                docked: 'bottom',
                items: [
                    {xtype: 'spacer'},
                    {
                        text: 'Reset',
                        handler: function() {
                            form.reset();
                        }
                    },
                    {
                        text: 'Login',
                        ui: 'confirm',
                        handler: function() {
                            var form = this.parent.parent;
                            //HOW TO GET THESE VALUES?
                            var username = form.user;
                            var password = form.password;
                            form.fireEvent('login', username, password);

                        }
                    }
                ]
            }
        ],
     ...
}

2 个答案:

答案 0 :(得分:1)

试试这段代码

  var form = this.parent.parent;
  var name=form.getValues().firstname

此代码将为您提供名称为名字的文本字段的值。

答案 1 :(得分:0)

解决方案是给textfield一个id:

items: [
  {
   xtype: 'textfield',
   ...
   id: 'username',
   ...
   },

并在表单组件

上使用函数down()和getValue()
var form = this.parent.parent;
var username = form.down('#username').getValue()