Extjs4——表单与输入控件

1.表单的简单形式:

  var form = new Ext.form.FormPanel({
        title: ‘form‘,
        defaultType: ‘textfield‘,
        buttonAlign: ‘center‘,
        frame: true,
        width: 220,
        fieldDefaults: {
            labelAlign: ‘right‘,
            labelWidth: 70
        },

        items: [{
            fieldLabel: ‘文本框‘
        }],
        buttons: [{
            text: ‘按钮‘
        }]
    });
    form.render("form");

效果如下:

 2.Ext中的输入控件:

Ext中提供的包括的控件及其继承关系如下图:

 2.1 基本输入控件Ext.form.Field:

Field中定义了输入控件通用的属性和功能函数,它们大致分为三类:

    // HtmlEditor需要这个
    Ext.tip.QuickTipManager.init();

    var field1 = new Ext.form.TextField({
        fieldLabel: ‘qtip‘,
        msgTarget: ‘qtip‘,
        allowBlank: false
    });
    var field2 = new Ext.form.TextField({
        fieldLabel: ‘title‘,
        msgTarget: ‘title‘,
        allowBlank: false
    });
    var field3 = new Ext.form.TextField({
        fieldLabel: ‘side‘,
        msgTarget: ‘side‘,
        allowBlank: false
    });
    var field4 = new Ext.form.TextField({
        fieldLabel: ‘under‘,
        msgTarget: ‘under‘,
        allowBlank: false
    });

    var form = new Ext.form.FormPanel({
        title: ‘form‘,
        frame: true,
        items: [field1, field2, field3, field4],
        renderTo: ‘form‘
    });

    form.getForm().isValid();

2.2 文本输入控件Ext.form.TextField:

除了Ext.form.Field提供的通用功能和属性外,TextField还可以检测输入的数据是否为空和输入内容的最大及最小长度

 // HtmlEditor需要这个
    Ext.QuickTips.init();

    var field = new Ext.form.TextField({
        fieldLabel: ‘empty‘,
        allowBlank: false,
        emptyText: ‘空‘,
        maxLength: 50,
        minLength: 10
    });

    var form = new Ext.form.FormPanel({
        title: ‘form‘,
        frame: true,
        items: [field],
        renderTo: ‘form‘
    });

});

效果如下:

2.3 多行文本输入控件Ext.form.TextArea

 // HtmlEditor需要这个
    Ext.QuickTips.init();

    var field = new Ext.form.TextArea({
        width: 200,
        grow: true,//grow设为true时,多行文本框会根据输入内容自动修改高度,而Ext.form.TextFiel会自动修改宽度
        preventScrollbars: true,//防止出现滚动条
        fieldLabel: ‘empty‘,
        allowBlank: false,
        emptyText: ‘空‘,
        maxLength: 50,
        minLength: 10,
        value: ‘第一行\n第二行\n第三行\n第四行‘
    });

    var form = new Ext.form.FormPanel({
        title: ‘form‘,
        frame: true,
        items: [field],
        renderTo: ‘form‘
    });

2.4 日期输入控件Ext.form.DateField:

 var field = new Ext.form.DateField({
        fieldLabel: ‘日期‘,
        emptyText: ‘请选择‘,
        format: ‘Y-m-d‘,
        disabledDays: [0,6]//禁止选星期六和星期日
    });

2.5  时间输入控件Ext.form.TimeField:

    var field = new Ext.form.TimeField({
        fieldLabel: ‘时间‘,
        emptyText: ‘请选择‘,
        minValue: ‘10:00 AM‘,
        maxValue: ‘2:00 PM‘,
        increment: 30 //时间间隔
    });

2.6 在线编辑器Ext.form.HtmlEditor:

通过enable选项启用或禁用对应的功能按钮

var field = new Ext.form.HtmlEditor({
        fieldLabel: ‘在线编辑器‘,
        enableAlignments: true,
        enableColors: true,
        enableFont: true,
        enableFontSize: true,
        enableFormat: true,
        enableLinks: true,
        enableLists: true,
        enableSourceEdit: true,
        fontFamilies: [‘宋体‘, ‘黑体‘]
    });

效果如下:

2.7 隐藏域ext.form.Hidden:

隐藏域ext.form.Hidden直接继承自Ext.form.Field,可以通过setValue()和getValue()函数对它执行赋值和取值操作,但她不会显示在页面上。

 var field = new Ext.form.Hidden({
        name: ‘hiddenId‘
    });
    field.setValue("some thing");
    var value = field.getValue();

    var form = new Ext.form.FormPanel({
        title: ‘form‘,
        frame: true,
        items: [field],
        renderTo: ‘form‘
    });

2.8 复选框(Checkbox)和单选按钮(radio):

2.8.1 复选框:

boxLabel是Checkbox和Radio两个控件独有的。

var form = new Ext.form.FormPanel({
        labelAlign: ‘right‘,
        title: ‘form‘,
        labelWidth: 50,
        buttonAlign: ‘center‘,
        frame:true,
        url: ‘form2.jsp‘,
        width: 280,

        items: [{
            xtype: ‘fieldset‘,
            title: ‘多选‘,
            autoHeight:true,
            defaultType: ‘checkbox‘,
            hideLabels: true,
            items: [
                {boxLabel: ‘多选一‘, inputValue: ‘1‘, checked: true},
                {boxLabel: ‘多选二‘, inputValue: ‘2‘},
                {boxLabel: ‘多选三‘, inputValue: ‘3‘}//inputValue来指定这三个CheckBox的值,以来区分它们
            ]
        }],
        buttons: [{
            text: ‘提交‘,
            handler: function() {
                form.getForm().submit();
            }
        }]
    });
    form.render("form");

2.8.2 单选按钮:

Ext中的单选按钮继承自复选框,radio有一个自己独有的getGroupValue()函数,可以用来或得某个分组中被选中的Radio的值

var form = new Ext.form.FormPanel({
        labelAlign: ‘right‘,
        title: ‘form‘,
        labelWidth: 50,
        buttonAlign: ‘center‘,
        frame:true,
        url: ‘form2.jsp‘,
        width: 280,

        items: [{
            xtype: ‘fieldset‘,
            title: ‘单选‘,
            autoHeight:true,
            defaultType: ‘radio‘,
            hideLabels: true,
            items: [
                {boxLabel: ‘单选一‘, name: ‘radio‘, inputValue: ‘1‘, checked: true},
                {boxLabel: ‘单选二‘, name: ‘radio‘, inputValue: ‘2‘},
                {boxLabel: ‘单选三‘, name: ‘radio‘, inputValue: ‘3‘}
            ]
        }],
        buttons: [{
            text: ‘提交‘,
            handler: function() {
                form.getForm().submit();
            }
        }, {
            text: ‘getGroupValue‘,
            handler: function() {
                Ext.Msg.alert(‘信息‘, form.getForm().findField(‘radio‘).getGroupValue());
            }
        }]
    });
    form.render("form");

点击getGroupValue后的效果:

2.8.3 CheckBoxGroup和RadioGroup控件

有了这两个控件,我们就可以为复选框和单选按钮控件实现各种复杂的排列方式了,默认横向排列方式,可以通过设置column属性来设置按列(一列或多列)排列,还可以自定义多列排列。

    var form = new Ext.form.FormPanel({
        title: ‘radio group‘,
        frame: true,
        width: 600,
        items: [{
            xtype: ‘radiogroup‘,
            fieldLabel: ‘自动布局‘,
            items: [
                {boxLabel: ‘Item 1‘, name: ‘cb-auto-1‘},
                {boxLabel: ‘Item 2‘, name: ‘cb-auto-2‘, checked: true},
                {boxLabel: ‘Item 3‘, name: ‘cb-auto-3‘},
                {boxLabel: ‘Item 4‘, name: ‘cb-auto-4‘},
                {boxLabel: ‘Item 5‘, name: ‘cb-auto-5‘}
            ]
        },{
            xtype: ‘radiogroup‘,
            fieldLabel: ‘单列‘,
            itemCls: ‘x-check-group-alt‘,
            columns: 1,
            items: [
                {boxLabel: ‘Item 1‘, name: ‘cb-col-1‘},
                {boxLabel: ‘Item 2‘, name: ‘cb-col-2‘, checked: true},
                {boxLabel: ‘Item 3‘, name: ‘cb-col-3‘}
            ]
        },{
                xtype: ‘radiogroup‘,
                fieldLabel: ‘多列(水平)‘,
                columns: 3,
                items: [
                    {boxLabel: ‘Item 1‘, name: ‘cb-horiz-1‘},
                    {boxLabel: ‘Item 2‘, name: ‘cb-horiz-2‘, checked: true},
                    {boxLabel: ‘Item 3‘, name: ‘cb-horiz-3‘},
                    {boxLabel: ‘Item 4‘, name: ‘cb-horiz-4‘},
                    {boxLabel: ‘Item 5‘, name: ‘cb-horiz-5‘}
                ]
        },{
            xtype: ‘radiogroup‘,
            fieldLabel: ‘多列(竖直)‘,
            itemCls: ‘x-check-group-alt‘,
            columns: 3,
            vertical: true,
            items: [
                {boxLabel: ‘Item 1‘, name: ‘cb-vert-1‘},
                {boxLabel: ‘Item 2‘, name: ‘cb-vert-2‘, checked: true},
                {boxLabel: ‘Item 3‘, name: ‘cb-vert-3‘},
                {boxLabel: ‘Item 4‘, name: ‘cb-vert-4‘},
                {boxLabel: ‘Item 5‘, name: ‘cb-vert-5‘}
            ]
        },{
            xtype: ‘radiogroup‘,
            fieldLabel: ‘多列<br />(自定义)‘,
            columns: [100, 100],
            vertical: true,
            items: [
                {boxLabel: ‘Item 1‘, name: ‘cb-custwidth‘, inputValue: 1},
                {boxLabel: ‘Item 2‘, name: ‘cb-custwidth‘, inputValue: 2, checked: true},
                {boxLabel: ‘Item 3‘, name: ‘cb-custwidth‘, inputValue: 3},
                {boxLabel: ‘Item 4‘, name: ‘cb-custwidth‘, inputValue: 4},
                {boxLabel: ‘Item 5‘, name: ‘cb-custwidth‘, inputValue: 5}
            ]
        },{
            xtype: ‘radiogroup‘,
            itemCls: ‘x-check-group-alt‘,
            fieldLabel: ‘自自定义布局‘,
            allowBlank: false,
            anchor: ‘95%‘,
            items: [{
                columnWidth: ‘.25‘,
                items: [
                    {xtype: ‘label‘, text: ‘Heading 1‘, cls:‘x-form-check-group-label‘, anchor:‘-15‘},
                    {boxLabel: ‘Item 1‘, name: ‘cb-cust-1‘},
                    {boxLabel: ‘Item 2‘, name: ‘cb-cust-2‘}
                ]
            },{
                columnWidth: ‘.5‘,
                items: [
                    {xtype: ‘label‘, text: ‘Heading 2‘, cls:‘x-form-check-group-label‘, anchor:‘-15‘},
                    {boxLabel: ‘A long item just for fun‘, name: ‘cb-cust-3‘}
                ]
            },{
                columnWidth: ‘.25‘,
                items: [
                    {xtype: ‘label‘, text: ‘Heading 3‘, cls:‘x-form-check-group-label‘, anchor:‘-15‘},
                    {boxLabel: ‘Item 4‘, name: ‘cb-cust-4‘},
                    {boxLabel: ‘Item 5‘, name: ‘cb-cust-5‘}
                ]
            }]
        }]
    });

    form.render(document.body);

效果如下:

 2.9 滑动条表单控件:

 var form = new Ext.form.FormPanel({
        width : 400,
        height: 160,
        title : ‘滑动条表单控件‘,

        bodyStyle  : ‘padding: 10px;‘,
        renderTo   : ‘container‘,
        defaultType: ‘sliderfield‘,
        buttonAlign: ‘left‘,

        defaults: {
            anchor: ‘95%‘,
            tipText: function(thumb){
                return String(thumb.value) + ‘%‘;
            }
        },
        items: [{
            fieldLabel: ‘Sound Effects‘,
            value: 50,
            name: ‘fx‘
        },{
            fieldLabel: ‘Ambient Sounds‘,
            value: 80,
            name: ‘ambient‘
        },{
            fieldLabel: ‘Interface Sounds‘,
            value: 25,
            name: ‘iface‘
        }],
        buttons: [{
            text: ‘submit‘
        }, {
            text: ‘reset‘
        }]
    });

效果如下:

也可以在同一滑动条上指定多个滑块,让用户可以同时指定多个数值,只需为values属性指定一个数组

  var horizontal = new Ext.Slider({
        renderTo: ‘multi-slider-horizontal‘,
        width   : 214,
        minValue: 0,
        maxValue: 100,
        values  : [10, 50, 90],
        plugins : new Ext.slider.Tip()
    });

    var vertical = new Ext.Slider({
        renderTo : ‘multi-slider-vertical‘,
        vertical : true,
        height   : 214,
        minValue: 0,
        maxValue: 100,
        values  : [10, 50, 90],
        plugins : new Ext.slider.Tip()
    });

    Ext.get(‘btn‘).on(‘click‘, function() {
        Ext.Msg.alert(‘info‘, horizontal.getValues() + ‘|‘ + vertical.getValues());
    });

效果如下:

2.10  ComboBox控件:

Ext中的combobox与HTML中的select没有任何关系,它完全是div重写的

时间: 2024-11-24 08:24:31

Extjs4——表单与输入控件的相关文章

深入浅出ExtJS 第四章 表单与输入控件(未完)

1 4.1 制作表单 2 var form = new Ext.form.FormPanel({ 3 title:'form', 4 defaultType:'textfield', 5 buttonAlign:'center', 6 frame:true, 7 width:220, 8 fieldDefaults:{ 9 labelAlign:'right', 10 labelWidth:70 11 }, 12 tiems:[{ //子组件; 13 fieldLabel:'文本框' //文本框

ExtJS4.2学习(17)表单基本输入控件Ext.form.Field

Ext.form.Field是所有表单输入控件的基类,其他的输入控件都是基于Ext.form.Field扩展得来的. Ext.form.Field中定义了输入控件通用的属性和功能函数,这些通用的属性和功能函数大致分为3大类:页面显示样式.控件参数配置和数据有效性检验.我们先来看看表单输入控件可以使用的校验显示方式.默认情况下,这些输入控件会监听blur事件,如果数据校验失败,就会根据msgTarget中的设置显示错误信息.通常,msgTarget会被设置为qtip,即使用QuickTip显示错误

ExtJS4.2学习(17)表单基本输入控件Ext.form.Field(转)

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-12-11/189.html ------------------------------------------------------------------------------------------- Ext.form.Field是所有表单输入控件的基类,其他的输入控件都是基于Ext.form.Field扩展得来的. Ext.form.Field

Html5之基础-9 HTML表单、其他控件、其他常用标记

一.表单概述 表单的作用 (1) 表单用于显示.收集信息,并提交信息到服务器 (2) 表单有两个基本部分 - 实现数据交互的可见的界面元素,比如文本框或按钮 - 提交后的表单处理 (3) 页面元素 - 使用 <form> 元素创建表单 - 在 <form> 元素中添加其他表单可以包含的控件元素 如图: 表单元素 <form> (1) 定义表单:使用成对的 <form></form>标记 (2) 主要属性 - action:  定义表单被提交时发生

(三)关于kendo IU表单form各类控件的数据绑定

=====================input textarea============================= <div id="view"> <input data-bind="value: inputValue" /> <textarea data-bind="value: textareaValue"></textarea> </div> <script&g

[转]html5表单上传控件Files API

表单上传控件:<input type="file" />(IE9及以下不支持下面这些功能,其它浏览器最新版本均已支持.) 1.允许上传文件数量 允许选择多个文件:<input type="file" multiple> 只允许上传一个文件:<input  type="file" single> 2.上传指定的文件格式 <input type="file" accept="im

响应式的账号登录界面模板完整代码,内置form表单和js控件

响应式的账号登录界面模板,内置form表单和js控件 1 <!DOCTYPE html> 2 <html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 3 4 <link type="text/css" rel="styleSheet"

.Net Core使用视图组件(ViewComponent)封装表单文本框控件

实例程序的界面效果如下图所示: 在表单中的搜索条件有姓名,学号,成绩.他们在一行中按照水平三等分排列. 在cshtml中用html实现上述表单效果的的代码如下: 1 <form class="form-horizontal" role="form"> 2 <div class="row"> 3 <div class="form-group col-md-4"> 4 <label for

2017年12月17日 ASP.NET 12个表单元素&amp;&amp;简单控件/复合控件

12个表单元素可以分为三大类 第一类:文本类 <input type = "text" /> //普通文本框 <input type = "password" /> //密码文本框 <input type = "hidden" /> //隐藏域 <textrea></textrea> //可变动文本框 第二类:按钮类 <input type = "button"