• 滑动验证码


    --引入 slide-unlock.css slide.js

    <div class="sliderdv">
    <div id="slider">
    <div id="slider_bg"></div>
    <span id="label">>></span>
    <span id="labelTip">拖动滑块验证</span>
    </div>
    </div>


    function Slider_init() {
    var slider = new SliderUnlock("#slider", {
    successLabelTip: "验证成功"
    }, function () {
    CheckSlider(); //ajax后台校验逻辑
    });
    slider.init();
    }

    slide-unlock.css

    .sliderdv {
        height: 44px;
        position: relative;
        background: #fff;
        /*padding: 0px 1em;*/
        color: #666;
        line-height: 40px;
        margin-bottom: 10px;
    }
    
    #slider {
        /*margin: 100px auto;*/
        /* 300px;*/
        100%;
        height: 40px;
        position: absolute;
        border-radius: 2px;
        background-color: #dae2d0;
        overflow: hidden;
        text-align: center;
        user-select: none;
        -moz-user-select: none;
        -webkit-user-select: none
    }
    
    #slider_bg {
        position: absolute;
        left: 0;
        top: 0;
        height: 100%;
        background-color: #7ac23c;
        z-index: 1
    }
    
    #label {
         46px;
        position: absolute;
        left: 0;
        top: 0;
        height: 38px;
        line-height: 38px;
        border: 1px solid #ccc;
        background: #fff;
        z-index: 3;
        cursor: move;
        color: #ff9e77;
        font-size: 16px;
        font-weight: 900
    }
    
    #labelTip {
        position: absolute;
        left: 0;
         100%;
        height: 100%;
        font-size: 13px;
        font-family: microsoft yahei,serif;
        color: #787878;
        line-height: 38px;
        text-align: center;
        z-index: 2
    }

    slide.js

    ; (function ($, window, document, undefined) {
        function SliderUnlock(elm, options, success) {
            var me = this;
            var $elm = me.checkElm(elm) ? $(elm) : $;
            success = me.checkFn(success) ? success : function () { };
            var opts = {
                successLabelTip: "Successfully Verified",
                duration: 200,
                swipestart: false,
                min: 0,
                max: $elm.width(),
                index: 0,
                IsOk: false,
                lableIndex: 0
            };
            opts = $.extend(opts, options || {});
            me.elm = $elm;
            me.opts = opts;
            me.swipestart = opts.swipestart;
            me.min = opts.min;
            me.max = opts.max;
            me.index = opts.index;
            me.isOk = opts.isOk;
            me.labelWidth = me.elm.find('#label').width();
            me.sliderBg = me.elm.find('#slider_bg');
            me.lableIndex = opts.lableIndex;
            me.success = success;
        }
    
    
    
    
    
        SliderUnlock.prototype.init = function () {
    
            var me = this;
            me.updateView();
            me.elm.find("#label").on("mousedown",
                function (event) {
                    var e = event || window.event;
                    me.lableIndex = e.clientX - this.offsetLeft;
    
                    me.handerIn();
    
                    document.onmousemove = function (ea) {
                        if (!me.isOk) {
                            ea.preventDefault();
                            //var event = ea;//event || window.event;
                            me.index = ea.clientX - me.lableIndex;
    
                            if ((me.index + me.labelWidth) >= me.max) {
                                me.index = me.max - me.labelWidth - 2;
                                me.swipestart = false;
                                me.isOk = true;
                            }
                            if (me.index < 0) {
                                me.index = me.min;
                                me.isOk = false;
                            }
                            if (me.index + me.labelWidth + 2 >= me.max && me.max > 0 && me.isOk) {
    
                                $('#label').unbind().next('#labelTip').text(me.opts.successLabelTip).css({
                                    'color': '#fff'
                                });
    
                                me.success();
                            }
                            me.sliderBg.css('width', me.index + 2);
                            me.elm.find("#label").css("left", me.index + "px")
                        }
                    }
    
                    document.onmouseup = function (ea) {
    
                        me.swipestart = false;
                        if (!me.isOk) {
                            me.index = 0;
                            me.sliderBg.animate({
                                'width': 0
                            }, me.opts.duration);
    
                            me.elm.find("#label").animate({
                                left: me.index
                            },
                                me.opts.duration).next("#lableTip").animate({
                                    opacity: 1
                                },
                                    me.opts.duration);
    
    
                            me.sliderBg.css('width', me.index + 2);
                            me.elm.find("#label").css("left", me.index + "px")
                        }
                        document.onmousemove = null;
                        document.mouseout = null;
                    }
    
    
                    document.mouseout = function (ea) {
                        me.swipestart = false;
                        if (!me.isOk) {
                            me.index = 0;
                            me.sliderBg.animate({
                                'width': 0
                            }, me.opts.duration);
    
                            me.elm.find("#label").animate({
                                left: me.index
                            },
                                me.opts.duration).next("#lableTip").animate({
                                    opacity: 1
                                },
                                    me.opts.duration);
    
    
                            me.sliderBg.css('width', me.index + 2);
                            me.elm.find("#label").css("left", me.index + "px")
                        }
                        document.onmousemove = null;
                        document.mouseout = null;
                    }
    
    
                })
                //.on("mousemove12",
                //    function (event) {
                //        //  me.handerMove(event);
                //    })
                //.on("mouseup",
                //    function (event) {
                //        me.handerOut();
                //    }).on("mouseout",
                //        function (event) {
                //            me.handerOut();
                //        })
                .on("touchstart",
                    function (event) {
                        var e = event || window.event;
                        me.lableIndex = e.originalEvent.touches[0].pageX - this.offsetLeft;
                        me.handerIn();
                    }).on("touchmove",
                        function (event) {
                            me.handerMove(event, "mobile");
                        }).on("touchend",
                            function (event) {
                                me.handerOut();
                            });
        };
        SliderUnlock.prototype.handerIn = function () {
            var me = this;
            me.swipestart = true;
            me.min = 0;
            me.max = me.elm.width();
        };
        SliderUnlock.prototype.handerOut = function () {
            var me = this;
            me.swipestart = false;
            if (me.index < me.max) {
                me.reset();
            }
        };
        SliderUnlock.prototype.handerMove = function (event, type) {
    
            var me = this;
            if (me.swipestart) {
                event.preventDefault();
                event = event || window.event;
                if (type == "mobile") {
                    me.index = event.originalEvent.touches[0].pageX - me.lableIndex;
                } else {
                    me.index = event.clientX - me.lableIndex;
                }
                me.move();
            }
        };
        SliderUnlock.prototype.move = function () {
            var me = this;
    
            if ((me.index + me.labelWidth) >= me.max) {
                me.index = me.max - me.labelWidth - 2;
                me.swipestart = false;
                me.isOk = true;
            }
            if (me.index < 0) {
                me.index = me.min;
                me.isOk = false;
            }
    
            if (me.index + me.labelWidth + 2 >= me.max && me.max > 0 && me.isOk) {
    
                $('#label').unbind().next('#labelTip').text(me.opts.successLabelTip).css({
                    'color': '#fff'
                });
                me.success();
            }
            me.updateView();
        };
        SliderUnlock.prototype.updateView = function () {
            var me = this;
    
            me.sliderBg.css('width', me.index + 2);
            me.elm.find("#label").css("left", me.index + "px")
        };
        SliderUnlock.prototype.reset = function () {
            var me = this;
            me.index = 0;
    
    
            me.sliderBg.animate({
                'width': 0
            },
                me.opts.duration);
    
            me.elm.find("#label").animate({
                left: me.index
            },
                me.opts.duration).next("#lableTip").animate({
                    opacity: 1
                },
                    me.opts.duration);
    
    
            me.updateView();
        };
        SliderUnlock.prototype.checkElm = function (elm) {
            if ($(elm).length > 0) {
                return true;
            } else {
                throw "this element does not exist.";
            }
        };
        SliderUnlock.prototype.checkFn = function (fn) {
            if (typeof fn === "function") {
                return true;
            } else {
                throw "the param is not a function.";
            }
        };
        window['SliderUnlock'] = SliderUnlock;
    })(jQuery, window, document);

     

     

    来源:https://github.com/wangchengqun/NetCoreVerificationCode.git

  • 相关阅读:
    数据结构之单链表及其函数算法
    数据结构之KMP算法next数组
    FastDFS的简单使用
    富文本编辑器kindeditor的使用
    SpringSecurity的简单入门
    Dubbo+zookeeper实现单表的增删改查
    windows批量删除当前目录以及子目录的所有空文件夹
    Echarts的简单入门
    基于JAX-RS规范的webService入门
    RESTFull开发风格
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/13439842.html
Copyright © 2020-2023  润新知