EXT4.1表单提交(非AJAX)
Ext.require([
'Ext.form.*',
'Ext.data.*'
]); Ext.onReady(function(){
Ext.apply(Ext.form.VTypes, {
repetition: function(val, field) { //返回true,则验证通过,否则验证失败
if (field.repetition) { //如果表单有使用repetition配置,repetition配置是一个JSON对象,该对象提供了一个名为targetCmpId的字段,该字段指定了需要进行比较的另一个组件ID。
var cmp = Ext.getCmp(field.repetition.targetCmpId); //通过targetCmpId的字段查找组件
if (Ext.isEmpty(cmp)) { //如果组件(表单)不存在,提示错误
Ext.MessageBox.show({
title: '错误',
msg: '发生异常错误,指定的组件未找到',
icon: Ext.Msg.ERROR,
buttons: Ext.Msg.OK
});
return false;
}
if (val == cmp.getValue()) { //取得目标组件(表单)的值,与宿主表单的值进行比较。
return true;
} else {
return false;
}
}
},
repetitionText: '两次输入的密码不一样'
}); Ext.define('example.contact', {
extend: 'Ext.data.Model',
fields: [
'name','stuid','password','password2','tel',
'sex','qq', 'email', 'grade_class',
{name: 'birthday', type: 'date', dateFormat: 'm/d/Y'}
]
}); Ext.define('example.fielderror', {
extend: 'Ext.data.Model',
fields: ['id', 'msg']
}); var formPanel = Ext.create('Ext.form.Panel', {
renderTo: 'form-ct',
url:'admin/userRegister', //如果要实现非AJAX表单提交就在这里加url
collapsible:true, method:'POST',
frame: true,
title:'注册',
width: '30%',
// left:1300,
bodyPadding: 5,
waitMsgTarget: true, fieldDefaults: {
labelAlign: 'right',
labelWidth: 85,
msgTarget: 'side'
}, // configure how to read the XML data
reader : Ext.create('Ext.data.reader.Xml', {
model: 'example.contact',
record : 'contact',
successProperty: '@success'
}), // configure how to read the XML errors
errorReader: Ext.create('Ext.data.reader.Xml', {
model: 'example.fielderror',
record : 'field',
successProperty: '@success'
}),
//实现非AJAX提交表单一定要加下面的两行! 下面的方法只适用于2.0版本
// onSubmit: Ext.emptyFn,
// submit: function() {
// this.getEl().dom.action='admin/userRegister'; //连接到服务器的url地址
// this.getEl().dom.submit();
// },
items: [{
xtype: 'fieldset', title: 'Information',
defaultType: 'textfield',
defaults: {
width: 280
},
items: [{
fieldLabel: '姓名',
allowBlank:false,
blankText :'请输入您的姓名',
emptyText: '请输入您的姓名',
name: 'name'
},
{
fieldLabel: '学号',
allowBlank:false,
blankText :'请输入您的学号',
emptyText: '请输入您的学号',
regex:/\d{9}$/,
vtype:'alphanum',
name: 'stuid'
}, {
inputType: 'password',
id: 'password',
name:'password',
maxLength: 15,
fieldLabel: '输入密码',
vtype:'alphanum',
allowBlank: false
},
{
inputType: 'password',
id: 'password2',
name:'password2',
maxLength: 15,
fieldLabel: '重复密码',
allowBlank: false,
vtype: 'repetition', //指定repetition验证类型
repetition: { targetCmpId: 'password' } //配置repetition验证,提供目标组件(表单)ID
},
{
fieldLabel: '电话',
// minLength:11,
// maxLength:11,
allowBlank:false,
blankText :'请输入合法的电话号码',
emptyText: '请输入您的电话',
regex:/\d{11}$/,
vtype:'alphanum',
name: 'tel'
},
{ xtype: 'combobox',
fieldLabel: '性别',
allowBlank:false,
blankText :'你没有性别??!', name: 'sex',
store: Ext.create('Ext.data.ArrayStore', {
fields: ['usex', 'sex'],
// data : Ext.example.states // from states.js
data:[['01','男'],['02','女'],['03','为什么会有这个选项...']
]
}),
valueField: 'usex',
displayField: 'sex',
typeAhead: true,
queryMode: 'local' },
{
fieldLabel: 'qq',
allowBlank:false,
minLength:5,
maxLength:10,
blankText :'请输入合法的QQ号码',
emptyText: '请输入您的QQ',
vtype:'alphanum',
name: 'qq'
},
{
fieldLabel: 'Email',
blankText :'请输入您的邮箱',
allowBlank:false,
name: 'email',
vtype:'email'
}, {
xtype: 'combobox',
fieldLabel: '专业班级',
allowBlank:false,
name: 'grade_class',
store: Ext.create('Ext.data.ArrayStore', {
fields: ['abbr', 'state'],
// data : Ext.example.states // from states.js
data:[['01','13计算机1班'],['02','12计算机2班'],['03','12计算机3班'],
['04','12计算机4班'],['05','12计算机5班'],['06','12计算机6班'],
['07','其他']]
}),
valueField: 'abbr',
displayField: 'state',
typeAhead: true,
queryMode: 'local',
emptyText: '例如:13计算机1班'
}, {
xtype: 'datefield',
fieldLabel: 'Date of Birth',
name: 'birthday',
allowBlank: false,
maxValue: new Date()
}
]
}], buttons: [{
text: '样例',
handler: function(){
formPanel.getForm().load({
url: 'xml-form-data.xml',
waitMsg: 'Loading...'
});
}
},
// {
// text: '提交',
// disabled: true,
// formBind: true,
// handler: function(){
// this.up('form').getForm().submit({
//// url: 'xml-form-errors.xml',
// url:'admin/userRegister',
// submitEmptyText: false,
// waitTitle:"请稍候",
// waitMsg:"正在提交表单数据,请稍候"
// })
// }
// },
{
text : '注册',
type : 'submit',
id:'register',
formBind:true,//只有表单全部校验通过 按钮才可用
disabled:true,//默认不可用
handler : function() { formPanel.getForm().submit({
//// url: 'xml-form-errors.xml',
url:'admin/userRegister',
submitEmptyText: false,
waitTitle:"请稍候",
waitMsg:"正在提交表单数据,请稍候"
});
}
},
{
text: '重置',
handler: function(){
formPanel.getForm().reset();
}
}
]
}); });
版权声明:本文为博主原创文章,未经博主允许不得转载。
EXT4.1表单提交(非AJAX)的更多相关文章
- Form表单提交,Ajax请求,$http请求的区别
做过前端同学想必都避免不了要和后台server打交道.而以下这三种与后台交互的方式想必大家都不陌生. Form表单提交,Ajax请求,Angular的$http请求 以前一直搞不清楚什么时候应该用哪种 ...
- form表单提交与ajax消息传递
form表单提交与ajax消息传递 1.前后端传输数据编码格式contentType: urlencoded 对应的数据格式:name=xxx&password=666 后端获取数据:requ ...
- form表单提交和ajax表单提交,关于移动端如何通过软键盘上的【搜索】和【前进】进行提交操作
[文章来源]由于自己对于form研究甚少,所以一直用的都是AJAX进行提交,这次后台提出要用form提交,顺便深入研究一下:之前在做表单的时候,发现input可以通过设置不同的type属性,调用不同的 ...
- form表单提交转为ajax方式提交
<form action="xxx" method="get"> //action的值是请求的url地址 <div class="f ...
- 学习笔记_springmvc返回值、数据写到页面、表单提交、ajax、重定向
数据写到页面 后台往前台传数据 TestController添加 /** * 方法的返回值采用ModelAndView, new ModelAndView("index", map ...
- form表单提交和ajax提交的区别
form表单是整个页面跳到服务器的地址然后提交数据: ajax是往这个地址post数据 <form style="padding:0px;margin:0px;" targe ...
- springmvc返回值、数据写到页面、表单提交、ajax、重定向
实验是在前一篇文章的项目上做的: 数据写到页面 后台往前台传数据 TestController添加 /** * 方法的返回值采用ModelAndView, new ModelAndView(" ...
- layui表单提交与ajax访问webapi
啊啊啊啊 这个东西实在很蛋疼啊 每次访问webapi就很老火 这里就一下 以后忘记的话就来查阅 不多说 直接开始 首先html页面 新建一个基于layui的form表单页面LayuiForm.csh ...
- LayUI表单提交不走ajax原因
在使用layui的时候.遇到一个问题.提交表单,没有走ajax,直接提交了表单页面. 原因是因为JQuery未引入 解决办法.引入JQuery或者使用layui自带Jquery var $ = lay ...
随机推荐
- iview-cli 项目、iView admin 代理与跨域问题解决方案
iview-cli 项目.iView admin 跨域.代理问题解决方案 在webpack.dev.config.js文件中: 添加: devServer: { historyApiFallback: ...
- Cloudera Manager 安装集群遇到的坑
Cloudera Manager 安装集群遇到的坑 多次安装集群,但每次都不能顺利,都会遇到很多很多的坑,今天就过去踩过的坑简单的总结一下,希望已经踩了的和正在踩的童鞋能够借鉴一下,希望对你们能有所帮 ...
- Kafka解惑之时间轮 (TimingWheel)
Kafka中存在大量的延迟操作,比如延迟生产.延迟拉取以及延迟删除等.Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能,而是基于时间轮自定义了一个用于实现延迟功能的定 ...
- git——本地项目上传到git
1.对于github相信大家写自动化代码的人都不陌生,而且这也可以说是你进军自动化的一项必须解锁的技能,今天抽空开始整理笔记,顺便整理下github的基本使用,从本地上传代码托管: 一.从无到有:先注 ...
- C语言编程学习不难学,是你没找对方法!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- 最短寻道优先算法(SSTF)——磁盘调度管理
原创 最近操作系统实习,敲了实现最短寻道优先(SSTF)——磁盘调度管理的代码. 题目阐述如下: 设计五:磁盘调度管理 设计目的: 加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法. 设计内容: ...
- BrightScript 3D test - Roku (4)
My initial attempt to port over an old Actionscript program, here it goes in main.brs. Library " ...
- Activemq首次运行报错 “找不到或无法加载主类”
首次运行Program Files\apache-activemq-5.10.0\bin目录下的activemq.bat文件,报错信息如下: 找不到或无法加载主类 Files\apache-activ ...
- IDEA的基本配置
一.安装 常规下载安装,换路径即可. 亲测可用破解方法:进入ide主页面,help-register-license server,然后输入 http://idea.iteblog.com/key.P ...
- 20155305《信息安全系统设计基础》10月18日课堂 fork,exic,wait
20155305<信息安全系统设计基础>10月18日课堂 fork,exic,wait fork()函数 1.fork函数作用 一般来讲, 我们编写1个普通的c程序, 运行这个程序直到程序 ...