0

ユーザー名とパスワードを含む 2 つのフィールドを持つフォームがあります。ハンドラー付きの [loginbutton] があります。コントローラーのイベントを発生させるために、ログインボタンのハンドラーのフィールドからこれらの値を取得するにはどうすればよいですか?

                        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);

これは config 宣言を含むコードです。

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);

                        }
                    }
                ]
            }
        ],
     ...
}
4

2 に答える 2

1

このコードを試してください

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

このコードは、名前が名であるテキストフィールドの値を提供します。

于 2012-09-25T05:27:32.997 に答える
0

解決策は、テキストフィールドにIDを与えることです。

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

フォームコンポーネントで関数down()とgetValue()を使用します

var form = this.parent.parent;
var username = form.down('#username').getValue()
于 2012-09-24T12:57:40.733 に答える