日期:2014-05-17  浏览次数:20762 次

extjs遮罩层登陆
我对extjs不了解,现在想完成这样一个功能,点击一个超链接,弹出一个遮罩层,层是用来登陆的,要把层里填写的用户名和密码传给struts1的action,现在由于不了解extjs,所以希望各位能给个思路!谢谢

------解决方案--------------------
都不了解了如何使用?
EXT里有弹出层的方法,点击链接就弹出层-->
填写完提交Form,也可以就AJAX发送用户名和密码,随便了,然后到Action-->
要返回数据不?返回来JS回调处理,把层关了.处理其它.
不返回数据,整个页面都换了?那前面提交Form更简单.
------解决方案--------------------
先写好一个formpanel,里面写好需要提交的字段、成功和错误的方法,还有提交路径(即平时写的提交路径如:user/login.action)!
最后提交到后台action,返回错误或成功。当页面接受到数据做相应的处理(如成功就调用成功的function)。
------解决方案--------------------
JScript code
var loginForm = new Ext.FormPanel({
        title : "登录",
        frame : true,
        bodyStyle : 'padding-left: 10px;padding-top: 10px;',
        width : 410,
        height : 220,
        items : [{
            layout : 'column',
            items : [{
                columnWidth : .45,
                html : '<img src="images/login/login_title.gif" />' // 左边列放一个logo
            }, {
                columnWidth : .55,
                bodyStyle : 'padding-left: 5px;padding-top:30px;',
                labelPad : 0,
                labelWidth : 45,
                items : [{
                    xtype : 'fieldset',
                    collapsible : false,
                    baseCls : "x-fieldset",
                    width : 200,
                    height : 120,
                    defaultType : 'textfield',
                    items : [{
                        cls : 'user',
                        fieldLabel : '用户名',
                        id : 'login-username',
                        name : 'username',
                        allowBlank : false,
                        // 不允许为空
                        value : jty.util.getCookie("username"),
                        blankText : '用户名不能为空',
                        anchor : '95%'
                    }, {
                        cls : 'key',
                        fieldLabel : '密 码',
                        id : 'login-password',
                        name : 'password',
                        allowBlank : false,
                        // 不允许为空
                        blankText : '密码不能为空',
                        value : "",
                        inputType : 'password',
                        anchor : '95%'
                    }],
                    buttons : [{
                        text : '登录',
                        type : 'submit',
                        handler : loginAction
                    }, {
                        text : '关闭',
                        handler : function() {
                            window.open("", "_parent", "");
                            window.close();
                        }
                    }]
                }]
            }]
        }]
    });
    loginForm.render("login");
    loginForm.el.center();

function loginAction() {
        // 验证是否合法
        if (!loginForm.form.isValid()) {
            // Ext.MessageBox.alert('验证错误', '页面验证有错误!');
            return;
        }
        loginForm.form.doAction('submit', {
            url : 'login.action',
            // 文件路径
            method : 'post',
            // 提交方法post或get
            params : '',

            // 提交成功的回调函数
            success : function(form, action) {
                document.location = 'index.action';
            },
            // 提交失败的回调函数
            failure : function(form, action) {
                // form.reset();
                Ext.MessageBox.alert('登录错误', action.result.message);
            }
        });
    }

------解决方案--------------------
CSS code

点击超链接的时候,显示登陆的window或是formPanel。显示模式设置成遮罩,遮罩后就不能操作后面的业务了。登陆成功后,隐藏window或formPanel即可。

------解决方案--------------------