ExtJs如何判断form表单是否被修改过详解
1.Extjs表单提交主要有三种方式:
1, EXT的form表单ajax提交(默认提交方式)
相对单独的ajax提交来说优点在于能省略写参数数组 ,form.getForm().submit
3、EXT的ajax提交,Ext.Ajax.request
2、EXT表单的非ajax提交
在我看来:采用第1,2种都很方便,关键是Ext.Ajax.request传递给后台是一个字符串形式的,需要Jason解析
2.记录代码问题:
SaveStudentDetails:function(btn,event){
var form = Ext.getCmp('StudentDetailsForm');
var formValues = form.getValues();
var userstore = this.getStore('StudentList');
if(form.getForm().isDirty()==false){
Ext.MessageBox.alert('提示','您没有修改或新增任何资料');
return;
}
form.getForm().submit({
clientValidation: true,
url: 'updateInf.action',
params: {
newStatus: 'delivered'
},
success : function(form2, action){
Ext.Msg.alert('更新提示' , action.result.msg) ;
userstore.load();
btn.up('window').close();
console.log(form);
console.log(form2);
//form.up('window[id=StudentDetailsWindow]').close();
//form.up('window').close();
},
failure : function(form , action){
switch(action.failureType){
case Ext.form.action.Action.CLIENT_INVALID :
Ext.Msg.alert('修改失败', '表单填写错误,输入无效值或没填完');
break ;
case Ext.form.action.Action.CONNECT_FAILURE :
Ext.Msg.alert('修改失败', '表单填写错误,输入无效值或没填完');
break ;
case Ext.form.action.Action.SERVER_INVALID :
Ext.Msg.alert('更新提示', action.result.msg);
}
}
});
},
问题1:ExtJs如何判断form表单是否被修改过?怎样让Form表单修改才能提交?
看代码5-8,这里使用isDirty()判断,实现效果图如图所示:

但是这里有个问题,就是这个form的字段是loadRecord来的,
var form = win.down('form').getForm();
form.loadRecord(record);
所以无论怎样,这里的form.isDirty总是true,因为form只要load就意味着它的值被改变了,所以在view层的form里要加上一句话:trackResetOnLoad:true,
参考资料:http://doc.okbase.net/wangs7345/archive/111076.html
trackResetOnLoad是在form表单load数据的时候是否记录字段原始值的开关。 在setVlaues中会根据这个开关进行判断,如果为true就记录这个数据。
如果为trackResetOnLoad:true,,则表单对象的form.reset()方法重置到最后一次加载的数据或setValues()数据,以相对于一开始创建表单那时的数据。
问题2:怎样使得Form值修改之后的值立即展示
代码行17,把它的store重新load了一下
问题3:怎样使修改之后窗口就关闭
代码行18-22,这里的Window可以通过btn和Window里面的form找到
但是有个问题,为什么success里面的form是form2,因为要操作的form和success里面的form不是一个,success里面的form是form.Basic里面的,不是这里关闭的form
所以这里的window可以通过3种方式找到
btn.up('window').close();
form.up('window[id=StudentDetailsWindow]').close();
form.up('window').close();
问题4:Extjs什么时候用getForm(),什么时候不用getForm()
查看api,当说到BasicForm的时候就getForm
当使用一个方法时候,如果这个form.panel里面有就可以直接使用,如果没有,就查Ext.Basic ,这个时候用到的就是Basic类型的,就要getForm
ExtJs如何判断form表单是否被修改过详解的更多相关文章
- Python的Django框架中forms表单类的使用方法详解
用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...
- 判断form表单每个input字段是否有内容
//---------------------------------------------------input失去焦点时判断是否有值 btn_click: function () { //inp ...
- jQuery判断 form表单提交时一些文本框的判断
一: form表单提交时如果表单里有input标签为空那么不提交form表单. <head> <script type="text/javascript"> ...
- JQuery判断form表单是否为空
功能:通过jquery判断form表单中是否有内容还未填写,如果有未填写的,则阻止提交 $(function () { $('form').bind('submit',function () { / ...
- 关于form表单:hover没有修改表单子元素样式
原来在写todolist的时候遇到的一个问题 是关于form表单的hover属性设置背景颜色 想要实现的效果如下: 但是一开始直接给form加hover选择器的时候是这样: 可以看到这样子直接加会使得 ...
- [extjs] ExtJs4.2 Form 表单提交
基本代码: <script> Ext.onReady(function(){ Ext.create('Ext.form.Panel', { title: '登录', bodyPadding ...
- BootStrapt iCheck表单美化插件使用方法详解(含参数、事件等) 全选 反选
特色: 1.在不同浏览器(包括ie6+)和设备上都有相同的表现 — 包括 桌面和移动设备 2.支持触摸设备 — iOS.Android.BlackBerry.Windows Phone等系统 4.方便 ...
- iCheck表单美化插件使用方法详解(含参数、事件等)
iCheck 特色: 1.在不同浏览器(包括ie6+)和设备上都有相同的表现 - 包括 桌面和移动设备 2.支持触摸设备 - iOS.Android.BlackBerry.Windows Phon ...
- [转]iCheck表单美化插件使用方法详解(含参数、事件等)
本文转自:http://www.exp99.com/jswz/f2e/1408696007_34.html iCheck 特色: 1.在不同浏览器(包括ie6+)和设备上都有相同的表现 — 包括 ...
随机推荐
- 双层for 循环
说说 图片 集合 list(set([ii for i in img_url_l for ii in i[0].replace('[','').replace(']','').replace(&quo ...
- go8---函数function
package main /* 函数function Go 函数 不支持 嵌套.重载和默认参数. 但支持以下特性: 无需声明原型(C语言在使用函数之前需要声明函数的原型).不定长度变参.多返回值.命名 ...
- js鼠标事情
js鼠标事情 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" ...
- 逻辑频道号---DVB NIT LCN
先介绍NIT,NIT描述如下: 有一点要注意,NIT是对大网的描述,即NIT并不是描述当前的流,而是描述大网的某些或者全部流.如下图,TS流描述1-6共对6个频点不同的TS流进行了描述,具体对哪一个流 ...
- 2-4 Vue中的属性绑定和双向数据绑定
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ubuntu/linuxmint如何添加和删除PPA源
[添加] 1.sudo add-apt-repository ppa:user/ppa-name 2.sudo apt-get update (然后再安装软件sudo apt-get install ...
- DTO和ENTITY的关系
DTO是数据传输对象:主要用于封装前台页面传过来的数据,在各个层之间进行数据的传递,主要用于接受前台数据进行封装并向各个层之间传递数据(个人理解是向下层传递数据),定义方法跟Bean规范一致 ENTI ...
- SeasLog的日志
https://github.com/Neeke/SeasLog/blob/master/README_zh.md 中文文档地址, 这是一个很好用的记录日志扩展,可以用于项目之中
- 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛-K-Matrix Multiplication(矩阵乘法)
题目描述 In mathematics, matrix multiplication or matrix product is a binary operation that produces a m ...
- 程序 从存储卡 内存卡 迁移到 SD卡
程序 从存储卡 内存卡 迁移到 SD卡 如果你想移动其他软件,在应用市场界面,点击“管理 > 应用搬家”,点击需要转移的应用旁边的“移至SD卡”即可.