在这里触摸新手。我在网上查了不少教程。我在尝试获取文本字段的值时遇到问题。单击登录按钮时出现的错误是Uncaught TypeError: Cannot call method 'getValue' of undefined
。这是否意味着我的Ext.getCmp
未定义?我将此面板包含在常规Ext.setup....onReady:.....
var login = new Ext.Panel({
height:'auto',
scroll:'vertical',
layout:{
type:'vbox',
align:'center'
},
items:[
{
cls:'launchscreen',
html:logo,
padding:10
},
new Ext.form.FormPanel({
width:300,
cls:'loginform',
items:[
{
xtype: 'fieldset',
title: 'Login',
items: [
{
xtype: 'textfield',
name : 'username',
label: 'Username',
labelWidth: 85
},
{
xtype: 'passwordfield',
name : 'password',
label: 'Password',
labelWidth: 85
}
]
},
{
xtype: 'button',
text: 'Submit',
ui: 'confirm',
handler:function()
{
alert(Ext.getCmp('username').getValue());
}
}
]
})
]
});
编辑:如果我在文本字段中设置id
属性,我就能获得该值。我已经看到了一些未设置id
的示例,它们根据name
属性获取值。所以我想我现在的问题是我应该根据id
或name
获得价值吗?
答案 0 :(得分:1)
使用Ext.getCmp()
您必须提供所需值的元素的 ID 。请参阅Sencha API文档:
getCmp(String id) 这是Ext.ComponentManager.get的简写参考。按ID查找现有组件 参数 id:String 组件ID
您也可以按名称查找元素,但我认为ID更快,但浏览器的引擎可能也有点贵。真的不能说出来。
无论如何,使用findField()
方法可以按名称查找字段。使用此方法,您应该提供所需字段的 ID或名称。请参阅API文档:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Basic-method-findField
示例:
var fieldValue= Ext.getCmp("YourFormID").getForm().findField("FieldName").getValue();