后端程序猿写的前端js代码模板

看几天的javascript面向对象和基础等之类相关javascript的知识,由于自己是写php的,也写过java,所以想在写javascript代码的时候也能用上面向对象的思想,

折腾了一整天的js继承和封装等,搞得我是吃午饭都想着问题,怎么javascript代码可以如此松散呢?眼看就要下班了,加班到现在不知怎么滴就弄了这样一个js代码模板,想以后每个模块都这样写。大了就各个功能对象提炼出来,如验证的、语言包的。

好了,废话不多说,菜鸟一个,代码没注释也不完整,高手留情指点:

reg.html文件:

<html>
    <head><include file="layout/head"/><title>{$Think.lang.REG}</title></head>
<body>
<include file="layout/nav"/>
<div id="content">
    <div class="panel panel-warning">
        <div class="panel-heading">
            <h3 class="panel-title">{$Think.lang.REG}</h3>
        </div>
        <div class="panel-body">
            <form id="regForm" action="{:U('home/user/reg')}" method="post">
                <div class="form-group">
                    <label for="account">{$Think.lang.ACCOUNT}</label>
                    <input type="text" id="account" methods="keyup,blur" name="account" class="form-control" style="width: 30%;"
                           placeholder="{$Think.lang.REG_ACCOUNT_TIP}" title="{$Think.lang.REG_ACCOUNT_TIP}"/>
                    <div class="alert alert-danger js-account_alert" style="width: 30%; display: none;">
                        <strong>:(</strong>
                        <span></span>
                    </div>
                </div>
                <div class="form-group">
                    <label for="password">{$Think.lang.PWD}</label>
                    <input type="password" methods="keyup,blur" name="password" class="form-control" style="width: 30%;" id="password"
                           placeholder="{$Think.lang.REG_PWD_TIP}" title="{$Think.lang.REG_PWD_TIP}"/>
                    <div class="alert alert-danger js-pwd_alert" style="width: 30%; display: none;">
                        <strong>:(</strong>
                        <span></span>
                    </div>
                </div>
                <div class="form-group">
                    <label for="password">{$Think.lang.VERIFY}</label>
                    <div class="input-group" style="width: 30%;">
                        <input type="text" methods="blur" id="verify" name="verify" class="form-control"/>
                        <span class="input-group-addon" style="padding: 0px;">
                            <img src="{:U('home/user/verify','','')}" methods="click" id="changeVerify" title="点击更换"/>
                        </span>
                    </div>
                    <div class="alert alert-danger js-verify_alert" style="width: 30%; display: none;">
                        <strong>:(</strong>
                        <span></span>
                    </div>
                </div>
                <input type="hidden" name="submit_code" value="{$submitCode}"/>
                <button type="button" id="regSubmitBtn" methods="click" class="btn btn-primary">{$Think.lang.REG}</button>
                <button type="reset" class="btn btn-default">{$Think.lang.RESET}</button>
            </form>
        </div>
    </div>
</div>
<include file="layout/foot"/>
<script src="reg.js"></script>
</body>
</html>

reg.js文件:

   $( function( ) {
        var Reg = {
            regEx: {
                ACCOUNT: /^\w{5,8}$/,
                PWD: /^\d{5,15}$/,
                VERIFY: /^\d{4}$/
            },
            node: {
                account: $( '#account' ),
                pwd: $( '#password' ),
                verify: $( '#verify' ),
                regForm: $( '#regForm' )
            },
            lang: {
                ACCOUNT: '{$Think.lang.REG_ACCOUNT_TIP}',
                PWD: '{$Think.lang.REG_PWD_TIP}',
                VERIFY: '{$Think.lang.REG_VERIFY_TIP}',
                CHECK_VERIFY_URL: "{:U('home/user/checkVerify')}",
                VERIFY_URL: "{:U('home/user/verify','','')}"
            },
            server: {
                checkVerify: function( val, callback ) {
                    $.post( Reg.lang.CHECK_VERIFY_URL, { verify: val }, callback, 'json' );
                }
            },
            validator: {
                account: function( val, tip ) {
                    var result = false;
                    if ( !Reg.regEx.ACCOUNT.test( val ) ) {
                        Reg.ui.showTip( tip, Reg.lang.ACCOUNT );
                    } else {
                        result = true;
                        Reg.ui.hideTip( tip );
                    }
                    return result;
                },
                pwd: function( val, tip ) {
                    var result = false;
                    if ( !Reg.regEx.PWD.test( val ) ) {
                        Reg.ui.showTip( tip, Reg.lang.PWD );
                    } else {
                        result = true;
                        Reg.ui.hideTip( tip );
                    }
                    return result;
                },
                verify: function( val, tip, callback ) {
                    var result = false;
                    if ( !Reg.regEx.VERIFY.test( val ) ) {
                        Reg.ui.showTip( tip, Reg.lang.VERIFY );
                    } else {
                        Reg.server.checkVerify( val, function( data ) {
                            if ( data.status ) {
                                if ( typeof callback === 'function' ) {
                                    callback();
                                }
                                Reg.ui.hideTip( tip );
                            } else {
                                Reg.ui.showTip( tip, Reg.lang.VERIFY );
                            }
                        } );
                    }
                    return result;
                }
            },
            ui: {
                showTip: function( obj, msg ) {
                    $( obj ).slideDown( 'slow' ).find( 'span' ).html( msg );
                },
                hideTip: function( obj ) {
                    $( obj ).slideUp( ).find( 'span' ).html( '' );
                }
            },
            event: {
                accountKeyup: function( e ) {
                    var self = $( this );
                    setTimeout( function( ) {
                        Reg.validator.account( self.val( ), '.js-account_alert' );
                    }, 1000 );
                },
                accountBlur: function( e ) {
                    var self = $( this );
                    Reg.validator.account( self.val( ), '.js-account_alert' );
                },
                passwordKeyup: function( e ) {
                    var that = $( this );
                    setTimeout( function( ) {
                        Reg.validator.pwd( that.val( ), '.js-pwd_alert' );
                    }, 1000 );
                },
                passwordBlur: function( e ) {
                    var self = $( this );
                    Reg.validator.pwd( self.val( ), '.js-pwd_alert' );
                },
                verifyBlur: function( e ) {
                    Reg.validator.verify( $( this ).val( ), '.js-verify_alert' );
                },
                changeVerifyClick: function( ) {
                    var src = Reg.lang.VERIFY_URL + '/' + new Date( ).getTime( );
                    $( this ).attr( 'src', src );
                },
                regSubmitBtnClick: function() {
                    Reg.validator.account( Reg.node.account.val( ), '.js-account_alert' ) &&
                            Reg.validator.pwd( Reg.node.pwd.val( ), '.js-pwd_alert' ) &&
                            Reg.validator.verify( Reg.node.verify.val( ), '.js-verify_alert', function() {
                                Reg.node.regForm.submit();
                            } );
                }
            },
            util: {
                upFirstLetter: function( word ) {
                    var reg = /\b(\w)|\s(\w)/g;
                    word = word.toLowerCase();
                    return word.replace( reg, function( m ) {
                        return m.toUpperCase();
                    } );
                }
            },
            initializer: function( ) {
                var node = $( '[methods]' );
                node.each( function( ) {
                    var self = $( this ), methods = self.attr( 'methods' );
                    if ( methods ) {
                        var _methods = methods.split( ',' );
                        for ( var i = 0, len = _methods.length; i < len; i++ ) {
                            var method = _methods[i];
                            if ( method ) {
                                var func = self.attr( 'id' ) + Reg.util.upFirstLetter( method );
                                console.log( func );
                                self.on( method, Reg.event[func] );
                            }
                        }
                    }
                } );
            }
        };
        Reg.initializer( );
    } );

后端程序猿写的前端js代码模板

时间: 2024-08-06 20:07:10

后端程序猿写的前端js代码模板的相关文章

后端程序员写的前端js代码模板

看几天的javascript面向对象和基础等之类相关javascript的知识,因为自己是写php的,也写过java,所以想在写javascript代码的时候也能用上面向对象的思想, 折腾了一整天的js继承和封装等,搞得我是吃午饭都想着问题,怎么javascript代码能够如此松散呢?眼看就要下班了,加班到如今不知怎么滴就弄了这样一个js代码模板,想以后每一个模块都这样写.大了就各个功能对象提炼出来,如验证的.语言包的. 好了,废话不多说,菜鸟一个,代码没凝视也不完整,高手留情指点: reg.h

幸福村站——成都传智播客程序猿写出你的烧烤代码

又是一个阳光明媚,风和日丽之天,假设作为程序猿的你还在键盘上苦苦的想着下一串代码该怎么写的话,那你就弱爆了.俗语说得好,学习要劳逸结合,写代码更是须要清晰的思维,在传智播客Java基础班开班一个月后,班主任决定带着这群"猿猴们"去传说中的"幸福村"放松放松,我们也跟着一起去感受程序猿们的烧烤代码的幸福吧! 带着好奇的心理走进了"幸福梅林站",一个又一个的农家乐园開始浮如今我们眼前,那里朴素的民风和漂亮的风景让我们临时忘却了学习上的烦恼和城市里的喧

怎样将程序猿写出来的程序打包成安装包(最简单的)

一.准备工作:先下载一个Inno Setup编译器,这里我用到的是5.3.3中文版的. 下载地址:http://www.skycn.com/soft/5625.html 软件介绍: Inno Setup 是一个免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本,能高速制作出标准Windows2000风格的安装界面,足以完毕一般安装任务.该软件用Delphi写成,其官方站点同一时候也提供源程序免费下载.它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无

程序猿写的程序将如何打包成安装包(最简单)

一.准备工作:先下载一个Inno Setup编译器,这里我用到的是5.3.3中文版的. 下载地址:http://www.skycn.com/soft/5625.html 软件介绍: Inno Setup 是一个免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本,能高速制作出标准Windows2000风格的安装界面,足以完毕一般安装任务.该软件用Delphi写成,其官方站点同一时候也提供源程序免费下载.它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无

程序猿写的剧本?你见过了??哈哈_快来看我的原创电影剧本《烽火连三月》前二十个场景

本剧本为毕业作品,所以禁止转载!欢迎各位评论吐槽!附上前二十个场景 老师评语: 1.剧本整体完成的较高,但换题为何不提前和我说明? 2.剧本格式注意修改,符合规范:剧本中间偶有并不是通过具体镜头展现情节,而是通过你的叙述,这是要用画外音还是转换为镜头展现:通读检查错别字和标点使用错误的地方. 3.刘世乡这个人物是怎样的一个人,他最后的结局就是和茵茵离开了? 1.上海国立交通大学大礼堂 内 日 黄教授正在台上做着慷慨激昂的演讲,鼓励着大家多出去走走,读万卷书不如行万里路,同时鼓励着大家多多考虑国事

后端程序猿怎能不会的linux命令

(图片超清,可放大网页查看) 来源 https://zhuanlan.zhihu.com/p/28674639

程序猿写诗4

?? 雨开半顷 晓来疏雨拭梧桐  半声浮萍半声莺 十二阑干人初等  霞荫莲塘虹已暝 嫋嫋香篆笼草清 澹澹花阴蝶影重 石径苔翠疑浥露 延客东风掩扉声 一汀烟雨纵 春酎醉尤浓 慵卷帘栊云初静 榆荚芳菲映幽庭 红杏香蕾摇烛影 池傍秋千缠古藤 西窗闲语雨半顷 旧棋闲敲云忽晴 抛却暖絮春犹怯 疑是邻家春意浓 留得半晌梦 独剩剪烛声 山溪语软画桥横 漪跃碧波柳垂风 乱峰揽得清虚韵 云寂风清一江亭 薄霄怎匿游鱼径 红药堪闻早蛩兴 松下茅栋诗独诵 冷烛孤篷一钓翁 纵吴画词工  却难述  很多情 篱外青芜漫荒垄 

一个Java程序猿眼中的前后端分离以及Vue.js入门

松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ,因此在我的书里边就没有多说.但是最近总结小伙伴遇到的问题,感觉很多人对前后端分离开发还是两眼一抹黑,所以今天松哥想和大家聊一下前后端分离以及 Vue.js 的一点事,算是一个简单的入门科普吧. 前后端不分 后端模板:Jsp.FreeMarker.Velocity 前端模板:Thymeleaf 前

不懂CSS的后端难道就不是好程序猿?

由于H5在移动端的发展如日中天,现在大部分公司对高级前端需求也是到处挖墙角,前端薪资也随之水涨船高,那公司没有配备专用的前端怎么办呢? 作为老板眼中的“程序猿” 前端都不会是非常无能的表现,那作为后端人员需要不需要懂前端呢?为了提升价值还是需要懂点的,不然一点问题就找前端,那是不是让别人疯了…… 前端先从最常见的调样式说起吧,重要知识点之盒子模型,这里就不叽叽歪歪那些难懂的概念,直接看下面的图吧. 什么叫做外边距,内边距…… 图1:英文版 通俗点就是下面的图: 图2:中文版 再看看总宽度与总高度