Ext限制输入的数据类型

数字类型——NumberField

{

    header : '年龄',

    dataIndex : 'age',

    width : 100,

    sortable : true,

    editor:new Ext.Editor(new Ext.form.NumberField({

        allowBlank:false,//不能为空

        allowNegative:false,//不能输入负号

        minValue:1,//可输入的最小值

        maxValue:150 //可输入的最大值

    }))

}

效果:

可以看到,编辑器我配置的是最大输入150,输入了151就提示错误了。

使用NumberField只能输入数字,输入其他的输入不了。

 

16.2下拉列表选择数据——ComboBox

16.2.1本地数据

//cmbobox的值

    var cmbData = [['0','全部'],['1','Java'],['2','C++'],['3','Linux'],['4','Ext Js']];

{

    header:"技术",

    dataIndex:'technology',

    sortable:true,

    editor:new Ext.Editor(new Ext.form.ComboBox({

        emptyText:"请选择技术",

        name:"techonology",

        readOnly:true,//如果设置为TRUE,则不能模糊查询;设置为FALSE,可以模糊查询,但是也可以输入其他内容。

        mode:"local",// 从哪儿获取数据,默认是remote,即从服务器获取

        valueField:"value",//值列,传递给Server的值,对应在storefields中定义了2

        displayField:"text",//显示的列

        triggerAction:'all',//如果没有配置为all,那么选择一项之后,就没法选择其他的项了,除非删除再重新选择。

        store:new Ext.data.SimpleStore({

            fields:['value','text'],

            data:cmbData

        })

    }))

}

 

如果triggerAction没有配置为all,那么结果就是这样的。

这样就没法选择其他的项,除非删除再重新选择。triggerAction默认的配置是query,就是这样的效果。

 

那如果配置为all呢?

那可以看到,是可以选择其他的项的。

 

16.2.2远程数据——还有问题

不知道为什么,从server获取数据放入ComboBox始终没法成功,页面上下拉框无内容。网上看了很多文章,依照上面的来也不行。先把代码贴出来,以后再看看。

代码:

var store =new Ext.data.JsonStore({

    url : './cmbnobox_json.jsp',

    fields : ["deptNo","deptName"]

});

 

 store.load();

 

newExt.form.ComboBox({

    renderTo : document.body,

    allowBlank : false,

    emptyText : "请选择部门",

    mode:"local",// 因为上面store已经将数据加载到本地了,因此使用local

    valueField : "deptNo",

    displayField : "deptName",

    name : "department",

    readOnly : true,

    triggerAction : "all",

    selectOnFocus:true,

    store : store

});

 

后台返回的数据格式是二维数组的形式:

[[1,'研发部'],[2,'财务部'],[3,'人事部']]

 

返回其他Json格式也不行。即{root:[{id:1,name:’软件开发’}]}这种格式也不行。下拉框始终没有值。

 

16.2.3将Select转换成ComboBox

这种创建方式要求必须有一个selectExt将数据抽取出来加到ComboBox中。

示例:

Js

var cmb =new Ext.form.ComboBox({

        transform:"select",

        mode:"local",

        triggerAction:"all",

        listeners:{

            change:function(c,oldV,newV) {

                Ext.Msg.alert("title",oldV +"," + newV);

            }

        }

    });

HTML

<selectid="select">

        <optionvalue="0">全部</option>

        <optionvalue="1">开发</option>

        <optionvalue="2">测试</option>

        <optionvalue="3">管理</option>

</select>

 

 

不过,如果select中有optgroup,则会直接取option追加,就没有分组了。

<selectid="select">

        <optgrouplabel="color">

            <optionvalue="red">Red</option>

            <optionvalue="green">Green</option>

            <optionvalue="blue">Blue</option>

        </optgroup>

        <optionvalue="0">全部</option>

        <optionvalue="1">开发</option>

        <optionvalue="2">测试</option>

        <optionvalue="3">管理</option>

</select>

 

16.2.4下拉列表分页——远程加载数据问题

加入pageSize配置就可以了,mode使用remote

示例:

var store=new Ext.data.JsonStore({

    proxy:new Ext.data.HttpProxy({

        url:"./combobox_remote.jsp"

    }),

    reader:new Ext.data.JsonReader({

        totalProperty:"total",

        root:"items"

    },["value","text"])

});

 

varcbx= new Ext.form.ComboBox({

    store:store,

    renderTo:document.body,

    mode:"remote",

    displayField:"text",

    valueField:"value",

    triggerAction:"all",

    pageSize:6,

    minListWidth:200,

    forceSelection:true,//要求输入的值必须在列表中存在

    resizable:true,//允许改变下拉列表的大小

    typeAhead:true//自动将第一个搜索到的补全输入

});

 

store.load({

    params:{

        start:0,

        limit:6

    }

});

16.3日期控件——DateField

var birthday =new Ext.form.DateField({

    allowBlank:false,

    blankText:"请选择日期!",

    emptyText:"选择日期",

    format:"Y-m-d",

    minValue:"1980-01-01",

    maxValue:"2012-12-12",

    disabledDates:["2000-01-01","09-10"],

    disabledDatesText:"不能选择这个日期",

    renderTo:Ext.getBody(),

    validateOnBlur:true,

    validator:function(v) {// 自定义验证方法

        //返回的格式是yyyy-mm-dd,字符串。

        //这个可以自己添加验证代码

    },

    value:"2012-10-10"//默认的日期

});

 

 

代码中设置了最小日期是1980-01-01,最大日期是2012-12-12,且不能选择2000-01-01,不能选择09-10这一天。

disabledDates可以是下面的形式:

  • ["03/08/2003", "09/16/2003"] would disable those exact dates
  • ["03/08", "09/16"] would disable those days for every year
  • ["^03/08"] would only match the beginning (useful if you are using short years)
  • ["03/../2006"] would disable every day in March 2006
  • ["^03"] would disable every day in every March
  • ["03/08/2003", "09/16/2003"] would disable those exact dates
  • ["03/08", "09/16"] would disable those days for every year
  • ["^03/08"] would only match the beginning (useful if you are using short years)
  • ["03/../2006"] would disable every day in March 2006
  • ["^03"] would disable every day in every March
  • ["03/08/2003", "09/16/2003"] would disable those exact dates
  • ["03/08", "09/16"] would disable those days for every year
  • ["^03/08"] would only match the beginning (useful if you are using short years)
  • ["03/../2006"] would disable every day in March 2006
  • ["^03"] would disable every day in every March
  • ["03/08/2003", "09/16/2003"] would disable those exact dates
  • ["03/08", "09/16"] would disable those days for every year
  • ["^03/08"] would only match the beginning (useful if you are using short years)
  • ["03/../2006"] would disable every day in March 2006
  • ["^03"] would disable every day in every March

["03/08/2003","09/16/2003"] would disable those exact dates

["03/08","09/16"] would disable those days for every year

["^03/08"]would only match the beginning (useful if you are using short years)

["03/../2006"]would disable every day in March 2006

["^03"]would disable every day in every March

 

 

 

16.4复选框——CheckBox

复选框代码很简单:

示例1

var cbx =new Ext.form.Checkbox({

    allowBlank:false,

    el:document.body,

    checked:true,

    name:"cbx",

    listeners:{

        click:function(v) {

            alert("click:" + v);

        }

    }

});

cbx.render();

alert(cbx.hasListener("click"));// true

alert(cbx.getValue()); // true

 

示例2

var f =new Ext.form.FormPanel({

        title:"Checkbox",

        width:300,

        autoHeight:200,

        frame:true,

        items:[

               {

               xtype:"fieldset",

               title:"多选",

               autoHeight:true,

               items:[

                        {boxLabel:"Checkbox1",checked:true,xtype:"checkbox",hideLabel:true,inputValue:"1"},      

                        {boxLabel:"Checkbox2",xtype:"checkbox",hideLabel:true,inputValue:"2"},      

                        {boxLabel:"Checkbox3",xtype:"checkbox",hideLabel:true,inputValue:"3"}      

               ]

               }

        ],

        renderTo:document.body

    });效果:

boxLabel:标签显示到checkbox后面。默认的fieldLabel是显示在左边。需要将hideLabel设置为TRUE,否则左边的标签也会显示出来,很难看。

如果没有inputValue,传递到后台就没法区分到底选择的是哪一个。因为value的默认值是on,因此提交到后台的数据就是这样:checkbox=on&checkbox=on&checkbox=on。

那用inputValue来区分,提交到后台就是这样:checkbox=1&checkbox=2&checkbox=3。

 

 

16.5单选框——RADIO

Radio继承 自Ext.form.CheckBox,CheckBox有的功能它都有。那如果项制作一组单选框,则需要进行一些区别与CheckBox的配置了。

var f =new Ext.form.FormPanel({

        title:"Radio",

        width:300,

        autoHeight:200,

        frame:true,

        items:[

               {

               xtype:"fieldset",

               title:"单选",

               autoHeight:true,

               items:[

                        {boxLabel:"Radio1",checked:true,xtype:"radio",hideLabel:true,inputValue:"1",name:"radio"},      

                        {boxLabel:"Radio2",xtype:"radio",hideLabel:true,inputValue:"2",name:"radio"},      

                        {boxLabel:"Radio3",xtype:"radio",hideLabel:true,inputValue:"3",name:"radio"}      

               ]

               }

        ],

        renderTo:"radio"

    });

效果:

Name相同的单选框会放到一组,这3个单选框的name一样,这样一次就只能选择一个。

 

16.6文件上传

文件上传很简单,2步搞定:

1.       给Form加上fileUpload:true;

2.       给form添加一个field,设置inputType:file。

代码:

var f =new Ext.form.FormPanel({

    title:"File Upload",

    fileUpload:true,

    width:750,

    url:"./fileupload.jsp",

    frame:true,

    items:[

        {

            fieldLabel:"选择文件",

            xtype:"textfield",

            name:"file",

            inputType:"file"

        }      

    ],

    buttons:[{

        text:"OK",

        handler:function() {

            f.getForm().submit();

        }

    }],

    renderTo:Ext.getBody()

});

 

 

当然了,具体的上传功能还是需要自己去实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 闪烁吧!看看extjs那些美丽的例子。 1.1. 一切从extjs发布包开始 1.2. 看看ext-1.1.1的文档 1.3. 看看ext-2.0的文档 1.4. 为什么有的例子必须放在服务器上才能看到效果? 1.5. 为什么自己按照例子写的代码,显示出来总找不到图片 1.6. 我们还需要什么? 1.7. 入门之前,都看helloworld。 1.7.1. 直接使用下载的发布包 1.7.2. 只把必要的东西放进项目中 2. 震撼吧!让你知道ext表格控件的厉害。 2.1. 功能丰富,无人能出其右 2.2. 让我们搞一个grid出来耍耍吧。 2.3. 上边那个是1.x的,2.0稍微有些不同哦 2.4. 按顺序,咱们先要把常见功能讲到 2.4.1. 自主决定每列的宽度 2.4.2. 让grid支持按列排序 2.5. 让单元格里显示红色的字,图片,按钮,你还能想到什么? 2.6. 更进一步,自动行号和多选checkbox 2.6.1. 自动行号 2.6.2. 全选checkbox的时间了,请允许我让2.0先上场。 2.6.3. 1.x时代的全选checkbox。 2.7. 分页了吗?分页了吗?如果还没分就看这里吧。 2.7.1. 表面工作,先把分页工具条弄出来。 2.7.2. 2.0赐予我们更大的灵活性 2.7.3. 迫不得已,要加上后台脚本了。 2.7.4. 其实分页不一定要踩在脚下,也可以顶在头上。 2.8. 爱生活,EditorGrid。 2.8.1. 旋动舞步,看我们怎么把这个EditorGrid炫出来。 2.8.2. 添加一行,再把它踢掉 2.8.3. 一切就绪,你可以按保存按钮了。 2.8.4. 天马行空,保证提交的数据绝对有效 2.8.5. 限制类型,让用户只能选择我们提供的数据 2.9. 连坐法,关于选择模型 2.10. 2.0有,1.x里没有的那些可怕的控件 2.10.1. 谓之曰PropertyGrid属性表格 2.10.2. 分组表格,嘻嘻,这是交叉报表吗? 2.11. 午夜怪谈,论可以改变大小,可以拖拽的表格 2.11.1. 先看看怎么拖拽改变表格的大小 2.11.2. 再看怎么在表格里拖动行 2.11.2.1. 无用功 之 同一个表格里拖拽 2.11.2.2. 无间道 之 从这个表格拖到另一个表格 2.11.2.3. 无疆界 之 从表格里拖到树上 3. 歌颂吧!只为了树也要学ext。 3.1. 真的,我是为了树,才开始学ext的。 3.2. 传统是先做出一棵树来。 3.3. 超越一个根 3.4. 你不会认为2.0里跟1.x是一样的吧? 3.5. 这种装配树节点的形式,真是让人头大。 3.6. jsp的例子是一定要有的 3.7. 让你知道树都可以做些什么 3.7.1. 检阅树形的事件 3.7.2. 右键菜单并非单纯的事件 3.7.3. 默认图标好单调,改一下撒 3.7.4. 偷偷告诉你咋从节点弹出对话框 3.7.5. 小小提示 3.7.6. 给树节点设置超链接 3.8. 灰壳显灵!让我直接修改树节点的名称吧! 3.9. 我拖,我拖,我拖拖拖。 3.9.1. 树形节点的拖拽有三种形式 3.9.2. 用事件控制拖拽 3.9.2.1. 叶子不能append 3.9.2.2. 把节点扔到哪里啦 3.9.2.3. 裟椤双树,常与无常 4. 祝福吧!把表单和输入控件都改成ext的样式。 4.1. 不用ext的form啊,不怕错过有趣的东西吗? 4.2. 慢慢来,先建一个form再说 4.3. 胡乱扫一下输入控件 4.4. 起点高撒,从comboBox往上蹦 4.4.1. 凭空变出个comboBox来。 4.4.2. 把select变成comboBox。 4.4.3. 破例研究下comboBox的内在本质哟 4.4.4. 嘿嘿~本地的做完了,试试远程滴。 4.4.5. 给咱们的comboBox安上零配件 4.4.6. 每次你选择什么,我都知道 4.4.7. 露一小手,组合上面所知,省市县三级级联。哈哈~ 4.4.7.1. 先做一个模拟的,所有数据都在本地 4.4.7.2. 再做一个有后台的,需要放在服务器上咯 4.5. 把form里的那些控件全部拿出来看看 4.6. form提交数据的三重门 4.6.1. ext中默认的提交形式 4.6.2. 使用html原始的提交形式 4.6.3. 单纯ajax 4.7. 验证苦旅 4.7.1. 不能为空 4.7.2. 最大长度,最小长度 4.7.3. 借助vtype 4.7.4. 自定义验证规则 4.7.5. 算不上校验的NumberField 4.8. 关于表单内部控件的布局问题 4.8.1. 什么都不做,默认的平铺布局 4.8.2. 分裂,分列 4.8.2.1. 分裂,分列。1.x 4.8.2.2. 分裂,分列。2.0 4.8.3. fieldset是个神奇的东西 4.8.4. 当某一天,需要往form加个图片什么的,该咋办? 4.9. 还要做文件上传哟 4.10. 非想非想,单选框多选框 4.10.1. 多选呢checkbox 4.10.2. 单选呢radio 5. 雀跃吧!超脱了一切的弹出窗口。 5.1. 呵呵~跳出来和缩回去总给人惊艳的感觉。 5.2. 先看看最基本的三个例子 5.2.1. Ext.MessageBox.alert() 5.2.2. Ext.MessageBox.confirm() 5.2.3. Ext.MessageBox.prompt() 5.3. 如果你想的话,可以控制得更多 5.3.1. 可以输入多行的输入框 5.3.2. 再看一个例子呗 5.3.3. 下一个例子是进度条 5.3.4. 动画效果,跳出来,缩回去 5.4. 让弹出窗口,显示我们想要的东东,比如表格 5.4.1. 2.0的弹出表格哦 5.4.2. 向2.0的window里加表格 5.4.3. 1.x里的叫做BasicDialog 5.4.4. 把form放进对话框里 6. 奔腾吧!让不同的浏览器里显示一样的布局。 6.1. 有了它,我们就可以摆脱那些自称ui设计师的人了。 6.2. 关于BorderLayout 6.3. 嗯,不如再看看附加效果 6.3.1. 先看看split 6.3.2. 再试试titlebar 6.3.3. 还不够,还不够,让四周的区域可以缩起来 6.3.4. 给这些区域都加上个关闭按钮 6.3.5. 用NestedLayoutPanel在五块中再进行分割,实现更复杂的布局 6.4. 2.0的ViewPort是完全不同的实现 6.5. 脑袋上有几个标签的tabPanel 6.6. 让布局复杂一点儿 7. 低鸣吧!拖拽就像呼吸一样容易。 7.1. 如此拖拽,简直就像与生俱来的本能一样。 7.2. 第一!乱拖。 7.3. 第二!代理proxy和目标target 8. 哭泣吧!现在才开始讲基础问题。 8.1. Ext.get 8.2. 要是我们想一下子获得一堆元素咋办? 8.3. DomHelper和Template动态生成html 8.3.1. DomHelper用来生成小片段 8.3.2. 批量生成还是需要Template模板 8.4. Ext.data命名空间 8.4.1. proxy系列 8.4.1.1. 人畜无害的MemoryProxy 8.4.1.2. 常规武器HttpProxy 8.4.1.3. 洲际导弹ScriptTagProxy 8.4.2. reader系列 8.4.2.1. 简单易行ArrayReader 8.4.2.2. 灵活轻便JsonReader 8.4.2.3. 久负盛名XmlReader 8.4.3. 相信你知道怎么做加法 8.5. 跟我用json,每天五分钟 8.5.1. Hello 老爸。 8.5.2. 老妈等等,孩子先上场。 8.5.3. 老妈来了,老妈来啦。 8.5.4. Ext对json的支持力度 8.5.5. 反向操作,ext把json变成字符串 8.6. 小声说说scope 8.7. 菜单和工具条 8.7.1. 至简至廉的菜单 8.7.2. 丰富一点儿的多级菜单 8.7.3. 单选多选,菜单里搞这套 8.7.4. 小把戏,定制好的菜单 8.7.5. SplitButton让按钮和菜单结合 9. 沉寂吧!我们要自己的控件。 9.1. 下拉树形选择框TreeField 9.2. 带全选的checkbox树形CheckBoxTree 9.3. 带全选的checkbox的grid 9.4. fisheye 9.5. 可以设置时间的日期控件 9.6. JsonView实现用户卡片拖拽与右键菜单 9.7. 下拉列表选择每页显示多少数据 10. 撕裂吧!邪魔外道与边缘学科。 10.1. dwr与ext整合 10.1.1. 无侵入式整合dwr和ext 10.1.2. DWRProxy 10.1.3. DWRTreeLoader 10.2. localXHR让你在不用服务器就玩ajax 10.3. 在form中使用fckeditor A. 常见问题乱弹 A.1. ext到底是收费还是免费 A.2. 怎么查看ext2里的api文档 A.3. 如何在页面中引用ext A.3.1. 顺便说说常见的Ext is not defined错误 A.4. 想把弹出对话框单独拿出来用的看这里 A.5. 想把日期选择框单独拿出来用的看这里 A.6. 听说有人现在还不会汉化ext A.7. 碰到使用ajax获得数据,或者提交数据出现乱码 A.8. TabPanel使用autoLoad加载的页面中的js脚本没有执行 B. 修改日志 C. 后记 C.1. 2007年12月5日,迷茫阶段 C.1.1. 仇恨 C.1.2. 反省 C.2. 关于ext与dwr整合部分的讨论 C.3. 怎么看文档附件里的范例 D. 贡献者列表 D.1. 感谢[飘17804726]的大力支持 D.2. 感谢[吧啦吧啦286556983]的大力支持 D.3. 感谢[游戏人生395181055]的大力支持 D.4. 感谢[綄帥77793603]的大力支持 D.5. 感谢[葡萄5793699]的大力支持 D.6. 感谢[天外小人442540141]的大力支持 D.7. 感谢[我想我是海39893874]的大力支持 D.8. 还要感谢: 来自 family168 网站的的新版extjs教程 说在前头的 1. 闪烁吧!看看extjs那些美丽的例子。 1.1. 一切从extjs发布包开始 1.2. 看看ext-1.1.1的文档 1.3. 看看ext-2.0的文档 1.4. 为什么有的例子必须放在服务器上才能看到效果? 1.5. 为什么自己按照例子写的代码,显示出来总找不到图片 1.6. 我们还需要什么? 1.7. 入门之前,都看helloworld。 1.7.1. 直接使用下载的发布包 1.7.2. 只把必要的东西放进项目中 2. 震撼吧!让你知道ext表格控件的厉害。 2.1. 功能丰富,无人能出其右 2.2. 让我们搞一个grid出来耍耍吧。 2.3. 上边那个是1.x的,2.0稍微有些不同哦 2.4. 按顺序,咱们先要把常见功能讲到 2.4.1. 自主决定每列的宽度 2.4.2. 让grid支持按列排序 2.5. 让单元格里显示红色的字,图片,按钮,你还能想到什么? 2.6. 更进一步,自动行号和多选checkbox 2.6.1. 自动行号 2.6.2. 全选checkbox的时间了,请允许我让2.0先上场。 2.6.3. 1.x时代的全选checkbox。 2.7. 分页了吗?分页了吗?如果还没分就看这里吧。 2.7.1. 表面工作,先把分页工具条弄出来。 2.7.2. 2.0赐予我们更大的灵活性 2.7.3. 迫不得已,要加上后台脚本了。 2.7.4. 其实分页不一定要踩在脚下,也可以顶在头上。 2.8. 爱生活,EditorGrid。 2.8.1. 旋动舞步,看我们怎么把这个EditorGrid炫出来。 2.8.2. 添加一行,再把它踢掉 2.8.3. 一切就绪,你可以按保存按钮了。 2.8.4. 天马行空,保证提交的数据绝对有效 2.8.5. 限制类型,让用户只能选择我们提供的数据 2.9. 连坐法,关于选择模型 2.10. 2.0有,1.x里没有的那些可怕的控件 2.10.1. 谓之曰PropertyGrid属性表格 2.10.2. 分组表格,嘻嘻,这是交叉报表吗? 2.11. 午夜怪谈,论可以改变大小,可以拖拽的表格 2.11.1. 先看看怎么拖拽改变表格的大小 2.11.2. 再看怎么在表格里拖动行 2.11.2.1. 无用功 之 同一个表格里拖拽 2.11.2.2. 无间道 之 从这个表格拖到另一个表格 2.11.2.3. 无疆界 之 从表格里拖到树上 3. 歌颂吧!只为了树也要学ext。 3.1. 真的,我是为了树,才开始学ext的。 3.2. 传统是先做出一棵树来。 3.3. 超越一个根 3.4. 你不会认为2.0里跟1.x是一样的吧? 3.5. 这种装配树节点的形式,真是让人头大。 3.6. jsp的例子是一定要有的 3.7. 让你知道树都可以做些什么 3.7.1. 检阅树形的事件 3.7.2. 右键菜单并非单纯的事件 3.7.3. 默认图标好单调,改一下撒 3.7.4. 偷偷告诉你咋从节点弹出对话框 3.7.5. 小小提示 3.7.6. 给树节点设置超链接 3.8. 灰壳显灵!让我直接修改树节点的名称吧! 3.9. 我拖,我拖,我拖拖拖。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值