关于对ExtJs中FormPanel,BasicForm的理解

最近正在用ExtJs2.2开发项目的UI,至于为何要用ExtJs开发这个就不说了,看了官方的demo就知道了。由于对JS不是很

熟,开发中遇到了不少的问题,在此也要感谢网上那些无私奉献的朋友们,正是有了你们,才坚定了学习ExtJs的信心。

为了自身查阅方便,也为了给网友们一些参考,写点文章。有错误的地方,还请各位大侠指正。

//loginForm为FormPanel

var formValues1= Ext.getCmp("loginForm").getForm().getValues(false);//返回表单字段数组对象

var formValues2 = Ext.getCmp("loginForm").getForm().getValues(true);//返回表单字符串

alert(formValues2.userNo);//返回表单中字段为userNo的值

alert(formvalues2);//返回表单字段的键值对,字段间以&隔开

 

给表单第一个字段设置焦点:

如果是window

listeners: {
'show': function() {
this.findByType('textfield')[0].focus(true, true); //第一个textfield获得焦点
}
},

如果是formpanel可以加如下代码

listeners : {
'render' : function() {
this.findByType('textfield')[0].focus(true, true); //第一个textfield获得焦点
}
},

都蛮好用的。

 

隐藏标签:

{
xtype: 'textfield',
name: 'FID',
id: 'FID',
hidden: true,
hideLabel:true
}]
});
只需将textfield的hidden和hideLabel配置为true就可以了。只设置hidden:true时会显示出来一个:的标签。 

 

ExtJs form Ajax提交:

function login() {
    Ext.QuickTips.init();
    // Ext.Msg.alert("系统提示","login.js is here");
    var loginForm = new Ext.form.FormPanel({
        id : 'loginForm',
        baseCls : 'x-plain',
        plain : true,
        defaults : {
            anchor : '95%'
        },
        defaultType : 'textfield',
        items : [{
            id : 'userNoFromKey',
            name : 'userNoFromKey',
            hidden : true,
            hideLabel : true
        }, {
            id : 'userNo',
            name : 'userNo',
            fieldLabel : '用户名',
            blankText : "用户名不能为空!",
            allowBlank : false

        }, {
            id : 'pwdFromKey',
            name : 'pwdFromKey',
            hidden : true,
            hideLabel : true
        }, {
            id : 'password',
            name : 'password',
            fieldLabel : '密   码',
            inputType : 'password',
            blankText : "密码不能为空!",
            allowBlank : false

        }, {
            id : 'serialIdFromKey',
            name : 'serialIdFromKey',
            hidden : true,
            hideLabel : true
        }

        ]
    });
    var loginWin = new Ext.Window({
        title : '一卡通系统登录页面',
        width : 500,
        height : 180,
        items : loginForm,
        plain : true,
        bodyStyle : 'padding:5px;',
        buttonAlign : 'center',
        layout : 'fit',
        buttons : [{
            text : '登录',

            handler : submitForm

        }, {
            text : '重置',
            handler : resetForm

        }],
        listeners : {
            'show' : function() {
                this.findByType('textfield')[0].focus(true, true); // 第一个textfield获得焦点
            }

        }
    });
    function submitForm() {
        //alert("submit...");
        var form = Ext.getCmp("loginForm").getForm();
        if (form.isValid()) {
            //alert("isvalid");
            form.submit({
                url : 'login.do?method=login',
                method : 'POST',
                success:function(form,action)
                            {
                                var isSucc = action.result.success;
                                if(isSucc)
                                {
                                     
                                     var forward = action.result.data;
                                     //alert(forward);
                                     window.location.href=forward;
                                }
                                else
                                {
                                   
                                     Ext.Msg.alert("系统提示", "用户登录失败");
                                }
                            },
                            failure : function(form, action) {
                                Ext.Msg.alert("系统提示", "用户登录失败");
                            }

            });
        }
    }
    function resetForm() {
        alert("reset...");
        Ext.getCmp("loginForm").getForm().reset();
    }
    loginWin.show();

}
Ext.onReady(login);

 

ExtJs 的form默认采用Ajax提交,如果必须采用普通form提交,则必须实现

    var myForm = new Ext.form.FormPanel({
        onSubmit: Ext.emptyFn,
        submit: function() {
            this.getForm().getEl().dom.submit();
        }
    });//来自API解释

代码如下:

Ext.onReady(function()
  {
       Ext.QuickTips.init();
       var form1 = new Ext.form.FormPanel({
       baseCls : 'x-plain',
       renderTo:"loginForm", //要渲染的div
       labelWidth: 75, // label settings here cascade unless overridden
       method:'POST',
      
       bodyStyle:'padding:5px 5px 0',
       width: 400,
       defaults: {width:300},
       defaultType: 'textfield',
       //实现非AJAX提交表单一定要加下面的两行!
       onSubmit: Ext.emptyFn,
       submit: function()
       {
           this.getEl().dom.action= 'index.jsp'; //连接到服务器的url地址
           this.getEl().dom.submit();
       },
      
       items: [{
           fieldLabel: '用户名',
           id: 'username',
           name: 'name',  
           allowBlank:false,
           blankText : "用户名不能为空",
           width:360
           },{
           fieldLabel: '密码',
           blankText : "密码不能为空",
           id: 'password',
           name: 'pwd',
           allowBlank:false,
           minLength : 6,
           width:360,
           inputType:'password' //类型为password
       }
       ],
       buttons: [{
           text: '登录',
           type:'button',
           id:'login',
           handler: function()
           {
                   //表单验证通过
                   if (form1.form.isValid())
                   {   
                       //提交form
                       form1.form.submit();
                   }   
           }
       },{
           text: '重置',
           type:'reset',
           id:'clear',
           handler: function()
           {
                form1.form.reset();
           }
       }
       ]
       });
   
    //将form添加window中
    var window = new Ext.Window({
        title: '用户登录',
        width:500,
        height:200,
        layout: 'fit',
        plain:true,
        bodyStyle:'padding:5px;',
        buttonAlign:'center',
        items: form1
    });
    //显示window
    window.show();   
  });

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值