表單包含 ``,用戶選擇文件後,自動將文件名顯示在旁邊的 `TextField`(`boardName`)中。
{
xtype: 'filefield', // ExtJS 3.x 使用 'filefield' 或 'textfield' + inputType:'file'
fieldLabel: 'Zip File',
allowBlank: false,
name: 'file',
emptyText: 'No file selected',
listeners: {
change: function(field, value) {
// value 為完整偽路徑,如 "C:\fakepath\xxx.zip"
var fileName = value.split('\\').pop().split('/').pop(); // 兼容 Win/Unix 路徑分隔符
Ext.getCmp('boardName').setValue(fileName);
// 若需副檔名填入 boardRevision
var ext = fileName.split('.').pop();
Ext.getCmp('boardRevision').setValue(ext || '');
}
}
}
var fm = new Ext.FormPanel({
renderTo: Ext.getBody(),
title: 'CAD Upload',
items: [
{ xtype: 'textfield', fieldLabel: '文件名', id: 'boardName', width: 200 },
{ xtype: 'textfield', fieldLabel: '文件類型', id: 'boardRevision', width: 200 },
{
xtype: 'filefield',
fieldLabel: 'Zip File',
name: 'file',
listeners: {
change: function(f, v) {
var name = v.replace(/^.*[\\\/]/, ''); // 正則取文件名更簡潔
Ext.getCmp('boardName').setValue(name);
Ext.getCmp('boardRevision').setValue(name.split('.').pop() || '');
}
}
}
],
buttons: [{ text: '上傳', handler: function() { fm.getForm().submit({...}); } }]
});