1.表单提交
代码:
form.jsp页面:
<form id="panel22"action="getTest.jsp" method="post"></form>
form.js:
//创建表单面板
var MyformPanel=Ext.create('Ext.form.Panel', {
frame: true,
title: 'FormFields Validation',
width: 340,
bodyPadding: 5,
renderTo:"panel22", //渲染到页面的form中去
fieldDefaults: {
labelAlign: 'left',
labelWidth: 90,
anchor: '100%',
//错误提示显示在下方,还可以配置为side、title、none
msgTarget: 'under'
},
items:[{
xtype:'fieldset',
title:'用户信息', //外框的title
collapsible:true,
autoHeight:true,
autoWidth:true,
defaults:{width:150,allowBlank:false,xtype:'textfield'},//提取共同属性
items: [{
xtype: 'textfield',
name: 'textfield1',
fieldLabel: '必须输入',
//不允许为空验证
allowBlank: false //1
}, {
xtype: 'textfield',
name: 'textfield2',
fieldLabel: '最多两个字符',
//输入的字符长度验证(至少输入2个字符)
minLength: 2 //2
}, {
xtype: 'textfield',
name: 'textfield3',
fieldLabel: '最长5个字符',
//输入的字符长度验证(最多输入2个字符)
maxLength: 5 //3
}, {
xtype: 'textfield',
name: 'textfield7',
fieldLabel: '正则表达式验证电话号码',
//通过正则表达式验证
regex: /^\d{3}-\d{3}-\d{4}$/, //4
regexText: 'Must be in the format xxx-xxx-xxxx'
}, {
xtype: 'textfield',
name: 'textfield4',
fieldLabel: '验证用户输入的是否为email',
//已经定义好的验证,请通过文档查看vtype
vtype: 'email' //5
}, {
xtype: 'textfield',
name: 'textfield6',
fieldLabel: '验证用户输入的是否是URL',
vtype: 'url' //8
}]
}],
buttons:[{text:"确定",handler:function(){
//获取按钮的父表单
var form=this.up("form").getForm();
//alert(form);
if(form.isValid()) //判断是否通过验证
{
//获取页面的表单转化为dom对象后提交
Ext.get("panel22").dom.submit();
//获取页面的表单元素后提交
};
}
},{text:"取消",handler:reset}],
buttonAlign:'center'
});
// function logins(){
// alert("aaaaa");
// MyformPanel.form.submit();//提交
// //alert("sdha");
// }
function reset(){
MyformPanel.form.reset();//取消
//alert("取消");
}
});
效果图:
2.页面弹出表单提交数据
showform.js文件:
Ext.onReady(function(){
//所有的操作定义在函数showform中
var showform=function(){
var add_winForm = Ext.create('Ext.form.Panel', {
frame: true, //frame属性
//title: 'Form Fields',
width: 340,
bodyPadding:5,
//renderTo:"panel21",
fieldDefaults: {
labelAlign: 'left',
labelWidth: 90,
anchor: '100%'
},
items: [{
//隐藏的文本框
xtype: 'hiddenfield', //1
name: 'hiddenfield1',
value: '隐藏的文本框'
}, {
//显示文本框,相当于label
xtype: 'displayfield', //2
name: 'displayfield1',
fieldLabel: 'Display field',
value: '显示文本框'
}, {
//输入文本框
xtype: 'textfield', //3
name: 'textfield1',
fieldLabel: 'Text field',
//value: '输入文本框',
allowBlank: false,
emptyText:'陈建强',
blankText:"提示"
}, {
//输入密码的文本框,输入的字符都会展现为.
xtype: 'textfield', //4
name: 'password1',
inputType: 'password',
fieldLabel: 'Password field'
}, {
//多行文本输入框
xtype: 'textareafield', //5
name: 'textarea1',
fieldLabel: 'TextArea',
id:"areaid",
value: '啦啦啦,我是卖报的小行家'
}, {
//上传文件文本框
xtype: 'filefield', //6
name: 'file1',
fieldLabel: 'File upload'
}, {
//时间文本框
xtype: 'timefield', //7
name: 'time1',
fieldLabel: 'Time Field',
minValue: '8:00 AM',
maxValue: '5:00 PM',
increment: 30
}, {
//日期文本框
xtype: 'datefield', //8
name: 'date1',
fieldLabel: 'Date Field',
value: new Date()
}, {
//下拉列表框
xtype: 'combobox', //9
fieldLabel: 'Combobox',
displayField: 'name',
store: Ext.create('Ext.data.Store', {
fields: [
{ type: 'string', name: 'name' }
],
data: [
{ "name": "Alabama" },
{ "name": "Alaska" },
{ "name": "Arizona" },
{ "name": "Arkansas" },
{ "name": "California" }
]
}),
queryMode: 'local',
typeAhead: true
}, {
//只能输入数字的文本框
xtype: 'numberfield',
name: 'numberfield1', //10
fieldLabel: 'Number field',
value: 20,
minValue: 0,
maxValue: 50
}, {
//复选框
xtype: 'checkboxfield', //11
name: 'checkbox1',
fieldLabel: 'Checkbox',
boxLabel: '复选框'
}, {
//单选框,注意name和下面的单选框相同
xtype: 'radiofield', //12
name: 'radio1',
value: 'radiovalue1',
fieldLabel: 'Radio buttons',
boxLabel: 'radio 1'
}, {
//单选框,注意name和上面的单选框相同
xtype: 'radiofield', //13
name: 'radio1',
value: 'radiovalue2',
fieldLabel: '',
labelSeparator: '',
hideEmptyLabel: false,
boxLabel: 'radio 2'
}, {
//拖动组件
xtype: 'multislider', //14
fieldLabel: 'Multi Slider',
values: [25, 50, 75],
increment: 5,
minValue: 0,
maxValue: 100
}, {
//拖动组件
xtype: 'sliderfield', //15
fieldLabel: 'Single Slider',
value: 50,
increment: 10,
minValue: 0,
maxValue: 100
}]
// ,
// buttons:[{text:"确定",handler:function(){
// varform1=this.up("form").getForm();
// //alert(form1);
// Ext.get("panel21").dom.submit();
// }},{text:"取消",handler:function(){alert("事件!");}}],
// buttonAlign:'center'
});
//alert(add_winForm);
//创建window面板,表单面板是依托window面板显示的
var syswin = Ext.create('Ext.window.Window',{
title : "新建属性",
width : 350,
//height : 120,
//plain : true,
iconCls : "addicon",
// 不可以随意改变大小
resizable : false,
// 是否可以拖动
// draggable:false,
collapsible : true, // 允许缩放条
closeAction : 'close',
closable : true,
// 弹出模态窗体
modal : 'true',
buttonAlign : "center",
bodyStyle : "padding:0 0 0 0",
items : [add_winForm],
buttons : [{
text : "保存",
minWidth : 70,
handler : function() {
if (add_winForm.getForm().isValid()) {
add_winForm.getForm().submit({
url :'testshowform.jsp',
//等待时显示 等待
waitTitle: '请稍等...',
waitMsg: '正在提交信息...',
params: {
t: "add"
},
success: function(fp, o) {
//alert(o);success函数,成功提交后,根据返回信息判断情况
if (o.result== true) {
Ext.MessageBox.alert("信息提示","保存成功!");
syswin.close(); //关闭窗口
// Store1.reload();
}else {
msg('信息提示', '添加时出现异常!');
}
},
failure: function() {
msg('信息提示', '添加失败!');
}
});
}
}
}, {
text : "关闭",
minWidth : 70,
handler : function() {
syswin.close();
}
}]
});
syswin.show();
};
showform(); //调用showform显示整个包含表单面板的window面板
});
Testshowform.jsp页面:
<%System.out.println("提交到了测试页面");%>
<%out.println("true"); %> //返回的“true”在success中的函数o.result中接收到的
效果截图:
提交过程效果图: