`

WebQQ更新:用户注册功能

阅读更多

原文:http://www.abigdreamer.com/mywork/webqq-update-user-registration-function.html

 

本blog已转移到:造梦师http://www.abigdreamer.com,谢谢大家的支持,欢迎大家以后常去我的小站转转!

 

本次更新==>用户注册功能:
1.AJAX自动检测用户名是否存在




2.密码强度检测功能





AJAX自动检测用户名是否存在的说明:
实现了输入框改内容变后就发送请求,否则不发送。主要改变的就是加颜色的部分,思路就是将输入框的内容备份一份,然后验证的时候,取出输入框的内容与备份的内容比较,如果相同就返回,即不发送请求,否则想后台发送请求,希望对需要的朋友有帮助:

Register = function() {
    var regForm, regWindow;
   var account;
    var couldRegister;

    var buildForm = function() {
        regForm = new Ext.FormPanel({
            // title:'用户表单',
            monitorValid : true,
            labelWidth : 80,
            // baseCls : 'x-plain',
            labelAlign : 'left',
            buttonAlign : 'center',
            bodyStyle : 'padding:5px;',
            width : 600,
            frame : true,// 设置了面板的边角是圆弧过度的,底色, 窗口是否显示背景色
            labelWidth : 80,
            // 容器中组件默认统一配置选项
            defaults : {
                allowBlank : false
            // 验证字段是否能为空
            },

            items : [{
                fieldLabel : '账号',
                id : 'account',
                name : 'account',
                xtype : 'textfield',
                blankText : '用户名不能为空!',
                validator : checkAccount,// 指定验证器
                invalidText : '用户名已经被注册!'
            }, {
                layout : 'column',// 在formpanel的itmes加入一个column的定义
                border : true,
                labelSeparator : ':',
                items : [{
                    columnWidth : .5,// 宽度50%
                    layout : 'form',
                    border : false,
                    items : [{
                        inputType : 'password',
                        fieldLabel : '密码',
                        id : 'password',
                        name : 'password',
                        xtype : 'textfield',
                        allowBlank : false,
                        blankText : '密码不能为空!'
                    }]
                }, {
                    columnWidth : .5,// 宽度50%
                    layout : 'form',
                    border : false,
                    items : [{
                        inputType : 'password',
                        fieldLabel : '确认密码',
                        id : 'affirmPassword',
                        name : 'affirmPassword',
                        xtype : 'textfield',
                        blankText : '确认密码不能为空!',
                        invalidText : '两次密码不一致!',
                        validator : function() {
                            if (Ext.get('password').dom.value == Ext
                                    .get('affirmPassword').dom.value)
                                return true;
                            return false;
                        }
                    }]
                }, {
                    columnWidth : .5,// 宽度50%
                    layout : 'form',
                    border : false,
                    items : [{
                        xtype : 'textfield',
                        fieldLabel : '真实姓名',
                        name : 'name',
                        anchor : '90%'
                    }]
                }, {
                    columnWidth : .25,// 宽度25%
                    layout : 'form',
                    border : false,
                    items : [{
                        style : 'margin-top:5px',
                        xtype : 'radio',
                        fieldLabel : '性别',
                        boxLabel : '男',
                        name : 'sex',
                        checked : true,
                        inputValue : '男',
                        anchor : '95%'
                    }]
                }, {
                    columnWidth : .25,// 宽度25%
                    layout : 'form',
                    labelWidth : 0,
                    labelSeparator : '',
                    hideLabels : true,// 不要Label
                    border : false,
                    items : [{
                        style : 'margin-top:5px',
                        xtype : 'radio',
                        fieldLabel : '',
                        boxLabel : '女',
                        name : 'sex',
                        inputValue : '女',
                        anchor : '95%'
                    }]
                }, {
                    columnWidth : .5,// 宽度50%,新起一行
                    layout : 'form',
                    border : false,
                    items : [{
                        xtype : 'datefield',// 日期型
                        fieldLabel : '出生日期',
                        name : 'birthday',
                        anchor : '90%'
                    }]
                }, {
                    columnWidth : .5,
                    layout : 'form',
                    border : false,
                    items : [{
                        xtype : 'combo',
                        fieldLabel : '学历',
                        name : 'education',
                        anchor : '90%'
                    }]
                }, {
                    columnWidth : .35,
                    layout : 'form',
                    border : false,
                    items : [{
                        xtype : 'checkbox',
                        fieldLabel : '权限组',
                        boxLabel : '系统管理员',
                        name : 'popedom',
                        inputValue : '1',
                        anchor : '95%'
                    }]
                }, {
                    columnWidth : .2,
                    layout : 'form',
                    labelWidth : 0,
                    labelSeparator : '',
                    hideLabels : true,
                    border : false,
                    items : [{
                        xtype : 'checkbox',
                        fieldLabel : '',
                        boxLabel : '管理员',
                        name : 'pepedom',
                        inputValue : '2',
                        anchor : '95%'
                    }]
                }, {
                    columnWidth : .2,
                    layout : 'form',
                    labelWidth : 0,
                    labelSeparator : '',
                    hideLabels : true,
                    border : false,
                    items : [{
                        xtype : 'checkbox',
                        fieldLabel : '',
                        boxLabel : '普通用户',
                        name : 'pepedom',
                        inputValue : '3',
                        anchor : '95%'
                    }]
                }, {
                    columnWidth : .25,
                    layout : 'form',
                    labelWidth : 0,
                    labelSeparator : '',
                    hideLabels : true,
                    border : false,
                    items : [{
                        xtype : 'checkbox',
                        fieldLabel : '',
                        boxLabel : '访客',
                        name : 'pepedom',
                        inputValue : '4',
                        anchor : '95%'
                    }]
                }, {
                    columnWidth : .8,// 宽度50%
                    layout : 'form',
                    border : false,
                    items : [{
                        xtype : 'textfield',
                        fieldLabel : '电子邮件',
                        vtype : 'email',
                        // regex : /^\d+$/, // 正则表达式,这里没有详细写,只是验证了数字
                        // regexText : '电子邮件格式错误!',
                        name : 'name',
                        anchor : '90%',
                        blankText : '电子邮件不能为空'
                    }]
                }, {
                    columnWidth : .8,// 宽度50%
                    layout : 'form',
                    border : false,
                    items : [{
                        xtype : 'textfield',
                        fieldLabel : '个人主页',
                        vtype : 'url',
                        name : 'name',
                        anchor : '90%'
                    }]
                }]
            }],
            buttons : [{
                text : '注册',
//                type : 'submit',
                formBind : true,
                handler : register
            }, {
                text : '清空',
                handler : function() {
                    regForm.form.reset();
                }
            }]
        });
    };

    // 检查用户名是否存在
  var checkAccount = function(e) {
        var accountTemp = Ext.get('account').dom.value;

        if (account != accountTemp) {
            account = accountTemp;

            Ext.Ajax.request({
                url : 'WebQQServlet?method=checkAccount',
                params : {
                    account : account
                },
                success : function(response, options) {
                    var responseArray = Ext.util.JSON
                            .decode(response.responseText);
                  if (responseArray.success == false) { // 用户名已经被注册
                        couldRegister = false; 
                  } else {// 用户名可以注册
                        couldRegister = true; 
                  }

                }
            });
      }

        return couldRegister;
  };
   
    // 单击按钮时执行登陆操作
    var register = function() {
        // 执行当前表单面板的submit
        regForm.getForm().submit({
            waitTitle : '系统提示',
            waitMsg : '正在登录,请等待...',// 动作发生期间显示的文本信息
            url : 'WebQQServlet?method=register',// submit发生时指向的地址logon?cmd=adminLogin
            method : 'POST',// 表单提交方式
            // Functions that fire (success or failure) when the server
            // responds.
            // The one that executes is determined by the
            // response that comes from Logon.do as seen below. The server would
            // actually respond with valid JSON,
            // something like: response.write "{ success: true}" or
            // response.write "{ success: false, errors: { reason: 'Login
            // failed. Try again.' }}"
            success : function(form, action) {// 数据验证通过时发生的动作
                window.location = 'webQQ.jsp?account='
                        + Ext.get("account").getValue();
            },
            // Failure function, see comment above re: success and failure.
            // You can see here, if login fails, it throws a messagebox
            // at the user telling him / her as much.
            failure : function(form, action) {
                if (action.failureType == 'server') {
                    obj = Ext.util.JSON.decode(action.response.responseText);
                    Ext.Msg.alert('登录失败', obj.errors.reason, function() {
                        form.findField('userAccount').focus();
                    });
                } else {
                    Ext.Msg.alert('Warning!',
                            'Authentication server is unreachable : '
                                    + action.response.responseText);
                }
                // if (action.failureType == Ext.form.Action.SERVER_INVALID)
                // Ext.MessageBox.alert('警告', action.result.errors.msg);
                longinFormPanel.getForm().reset();
            }
        });
    };

    var buildWin = function() {
        regWindow = new Ext.Window({
            id : 'regwin',
            title : '注册',
            layout : 'fit',
            // width : 320,
            height : 280,
            bodyStyle : 'padding:4px',
            maximizable : false,
            closeAction : 'close',
            closable : false,
            collapsible : true,
            buttomAlign : 'right',
            plain : true,
            items : regForm
        });
    };

    return {
        init : function() {
            Ext.BLANK_IMAGE_URL = '../plugins/extjs/ext-2.0/resources/images/default/s.gif';
            Ext.QuickTips.init();
            Ext.form.Field.prototype.msgTarget = 'side';
            // 改变主题为紫色
            // Ext.util.CSS.swapStyleSheet("theme",
            // "../plugins/extjs/ext-2.0/resources/css/xtheme-purple.css");
            // Ext.util.CSS.swapStyleSheet("theme",
            // "../plugins/extjs/ext-2.0/resources/css/xtheme-slickness.css");
            buildForm();
            buildWin();

            // 最后把窗口面板显示出来
            regWindow.show();
        }
    }
}();

Ext.onReady(Register.init, Register);

 

  • 大小: 20.2 KB
  • 大小: 26.4 KB
分享到:
评论
1 楼 yong230 2011-12-31  
很好的例子,谢谢学习了!

相关推荐

    JSP+Mysql 实现简易的 WebQQ

    3. **聊天功能**:当用户发送消息时,JSP接收消息内容,将消息存入数据库,并可能需要实时更新聊天界面显示新消息。这可能涉及AJAX技术实现异步通信,提高用户体验。 4. **在线状态管理**:系统需要维护用户的在线...

    WebQQ聊天系统拥有腾迅QQ最基本的聊天功能

    WebQQ聊天系统是一款基于PHP开发的应用,它集成了腾讯QQ的基本聊天功能,使得用户可以在网页端享受即时通讯的乐趣。这款系统充分利用了QQ的IP数据库,不仅提供了基础的文字聊天功能,而且还允许用户在聊天过程中查看...

    webqq 界面实现代码 html 直接运行 和现有版本完全一致

    3. **JavaScript**:JavaScript是实现网页动态交互的关键,负责处理用户的输入、响应事件、更新页面内容等功能。在这个项目中,JavaScript代码处理了用户点击、拖动、输入等行为,实现了聊天功能、登录验证、好友...

    仿webqq2.0设计文档与数据库

    4. **功能模块设计**:对登录注册、好友管理、聊天室、消息推送等核心功能进行详细描述。 5. **技术选型**:可能包含前端开发语言(如HTML、CSS、JavaScript)、后端技术(如Java、PHP或Node.js)、以及用于通信的...

    WEBQQ截图功能,OCX控件

    【WEBQQ截图功能,OCX控件】是一个在网页端实现QQ截图功能的技术方案,它主要依赖于OCX(ActiveX)控件。OCX控件是微软开发的一种组件技术,用于在Windows环境中构建和扩展应用程序,特别是在浏览器环境中提供丰富的...

    电子商务设计(ASP+ADO.NET+数据库) WebQQ

    - 聊天功能:用户间的即时通讯是WebQQ的核心,这需要建立一套消息传递机制,可能涉及服务器端的消息队列和客户端的实时刷新技术,如Ajax或者WebSocket。 5. 技术挑战与优化: - 安全性:防止SQL注入、XSS攻击等...

    C#webqq登录源码及获取好友列表和文字聊天源码

    7. **调试与测试**:由于WebQQ协议可能会有变动,源码需要不断更新和调试以适应变化。开发者需要掌握调试技巧,如使用Visual Studio的调试器,设置断点,查看变量值等。 通过学习和理解这个项目,开发者不仅可以...

    仿webqq在线桌面与应用

    3. **AJAX**:在没有WebSocket的情况下,可能会利用AJAX进行异步数据交换,实现部分页面的更新,提高用户体验。 4. **后端编程**:后端可能采用PHP(因为与Discuz整合),处理用户的登录、注册、发送消息等业务逻辑...

    仿webQQ 源码

    【描述】中提到,该源码实现了WebQQ的大部分功能,包括但不限于用户注册、登录、添加好友、创建群组等基本社交操作。全开源的设计使得开发者能够深入理解每个功能的实现细节,这对于提升C#编程技能,尤其是XML处理和...

    基于jsp技术的仿webqq聊天系统

    在聊天系统中,Ajax可能用于实现私聊、群聊的实时更新,以及无刷新的好友搜索、群组查找等功能,提供平滑且高效的用户界面。 至于文件名"QQ",可能是项目的主要源代码文件或者包含了项目的结构和资源。通常,一个...

    利用post登录网页webqq的VB示例源代码.rar

    描述中提到的“VB利用post登陆网页webqq简单一例”,表明这是一个简单的VB应用实例,它在VB的窗体界面中集成了登录功能。用户可以输入QQ账号和密码,然后通过这个窗体应用进行登录操作。由于没有提及验证码验证,这...

    WebQQ开发实例

    在【WebQQ开发实例】中,Node.js主要负责以下功能: 1. **服务器端逻辑**:Node.js服务器接收来自客户端的HTTP请求,处理聊天相关的业务逻辑,例如用户登录验证、消息发送与接收、聊天记录存储等。 2. **WebSocket...

    基于WebQQ协议的QQ机器人。命令行工具,Hubot支持!-qqbot.zip

    在部署和运行QQ机器人时,你需要注册一个WebQQ应用以获取API密钥和访问令牌,这是与QQ服务器进行通信的关键。然后,你需要配置qqbot的设置,包括你的QQ号、群组ID以及Hubot的相关参数。在运行机器人后,你可以通过在...

    在网页上显示QQ是否在线

    虽然腾讯的WebQQ服务已停用,但仍有其他方式可以实现类似功能,以满足网站与用户之间实时交流的需求。不过,随着隐私保护意识的提高和社交媒体平台的发展,直接展示QQ在线状态的做法可能逐渐被其他更安全和多样化的...

    IMS.rar_IMS_JAVA 即时通讯_jsp IMS_即时 通讯_即时通讯

    在本项目“IMS”中,我们看到它被比作WebQQ,这意味着它可能具有类似的用户界面和功能,允许用户在网页上进行实时聊天。 【IMS系统架构】 IMS即时通讯系统可能基于Java技术栈构建,这通常涉及到以下几个关键组件:...

    ASP.NET 2.0 Ajax典型应用

    在描述中提到的“无刷新聊天室”和“webQQ”都是Ajax技术的经典应用场景,它们利用Ajax实现了以下功能: 1. **实时通信**:在聊天室应用中,Ajax使得用户无需刷新页面即可看到新的聊天消息,提升了交互体验。这通常...

    QQ挂机站全部源代码(good)

    第一步:新建一sql数据库webQQ,导入SQL数据库备份(在管理器里的还原备份功能,不会找找资料) 在Web.config里修改sa用户密码。 第二步:注册NT后台服务,并在windows服务管理器启动webqq服务 C:\WINDOWS\...

    网站中,QQ在线联系插件

    网站中的QQ在线联系插件是一种常见的交互式工具,它允许访客通过网页直接与网站的客服人员进行实时的在线沟通,极大地提升了...不过,为了确保数据安全和用户体验,还需要定期更新插件,遵循腾讯的相关政策和最佳实践。

    带返回顶部的常用悬浮QQ、msn在线客服JS代码

    对于QQ在线客服,可以通过调用腾讯提供的WebQQ API实现,这需要注册获取API密钥,并在网页中插入对应的JS代码。代码会创建一个浮动的QQ图标,当用户点击后,会调用WebQQ的聊天窗口。而MSN在线客服,由于微软已经停止...

    自动弹出的QQ客服聊天代码

    4. **接口调用**:如果使用的是WebQQ API,需要预先注册应用并获取相应的API密钥,然后在JavaScript中调用相应接口,实现无跳转的添加好友请求。 5. **错误处理和反馈**:良好的用户体验需要包含适当的错误处理和...

Global site tag (gtag.js) - Google Analytics