我有一个包含两个字段的表单,其中包含用户名和密码。我有一个带有处理程序的[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);
}
}
]
}
],
...
}
答案 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()