Ext JS是一个强大的JavaScript框架,用于构建富客户端Web应用程序。Ext.FormPanel是Ext JS中用于创建表单的容器组件,而弹出窗口通常使用Ext.Window或Ext.window.Window(取决于Ext JS版本)来实现。
首先需要创建一个表单面板:
var formPanel = Ext.create('Ext.form.Panel', {
title: '示例表单',
width: 300,
bodyPadding: 10,
items: [{
xtype: 'textfield',
fieldLabel: '用户名',
name: 'username',
allowBlank: false
}, {
xtype: 'textfield',
fieldLabel: '密码',
name: 'password',
inputType: 'password',
allowBlank: false
}],
buttons: [{
text: '提交',
handler: function() {
if(formPanel.getForm().isValid()) {
formPanel.getForm().submit({
url: 'submit.php',
success: function(form, action) {
Ext.Msg.alert('成功', action.result.msg);
win.close();
},
failure: function(form, action) {
Ext.Msg.alert('失败', action.result.msg);
}
});
}
}
}, {
text: '取消',
handler: function() {
win.close();
}
}]
});
var win = Ext.create('Ext.window.Window', {
title: '表单窗口',
height: 200,
width: 350,
layout: 'fit',
modal: true,
items: [formPanel]
});
win.show();
Ext.onReady(function() {
// 创建表单面板
var formPanel = Ext.create('Ext.form.Panel', {
title: '用户登录',
width: 300,
bodyPadding: 10,
defaults: {
anchor: '100%',
labelWidth: 80
},
items: [{
xtype: 'textfield',
fieldLabel: '用户名',
name: 'username',
allowBlank: false,
msgTarget: 'under'
}, {
xtype: 'textfield',
fieldLabel: '密码',
name: 'password',
inputType: 'password',
allowBlank: false,
msgTarget: 'under'
}],
buttons: [{
text: '登录',
formBind: true, // 只在表单有效时启用
handler: function() {
var form = formPanel.getForm();
if(form.isValid()) {
form.submit({
url: 'login.php',
success: function(form, action) {
Ext.Msg.alert('成功', '登录成功');
win.close();
},
failure: function(form, action) {
Ext.Msg.alert('失败', action.result.msg);
}
});
}
}
}, {
text: '取消',
handler: function() {
win.close();
}
}]
});
// 创建窗口
var win = Ext.create('Ext.window.Window', {
title: '登录窗口',
height: 220,
width: 400,
layout: 'fit',
modal: true,
closeAction: 'hide',
items: [formPanel]
});
// 显示窗口
win.show();
});
modal: true
使窗口成为模态对话框allowBlank: false
设置必填字段,formBind: true
使按钮在表单有效时才可用getForm()
获取表单对象,调用submit()
方法提交数据layout
设置为'fit'allowBlank: false
msgTarget
设置是否正确显示错误信息closeAction: 'hide'
可以保留窗口实例以便重复使用win.close()
或win.hide()
关闭窗口这种方法适用于Ext JS 4.x及更高版本,如果是Ext JS 3.x,语法会略有不同,主要是创建组件的方式。
没有搜到相关的文章