/* * drag 1.0 * create by tony@jentian.com * date 2015-08-18 * 拖动滑块 */ (function ($) { var validate = false; $('form').submit(function () { if (!validate) { $('.drag_text').css('color','red'); return false; } else { var l = Ladda.create(document.getElementsByClassName('btn-login')[0]); l.start(); } }); $(function () { $('#drag').drag(); }); $.fn.drag = function(options){ var x, drag = this, isMove = false, defaults = { }; var options = $.extend(defaults, options); //添加背景,文字,滑块 var html = '
'+ '
拖动滑块验证
'+ '
'; this.append(html); var handler = drag.find('.handler'); var drag_bg = drag.find('.drag_bg'); var text = drag.find('.drag_text'); //var maxWidth = drag.width() - handler.width() - 2; //能滑动的最大间距 var maxWidth = 426; //鼠标按下时候的x轴的位置 handler.on('mousedown touchstart', function (e) { text.css('color', '#666'); isMove = true; x = (e.pageX ? e.pageX : e.originalEvent.targetTouches[0].pageX) - parseInt(handler.css('left'), 10); handler.removeClass('handler_on'); drag_bg.removeClass('drag_bg_on'); }); //鼠标指针在上下文移动时,移动距离大于0小于最大间距,滑块x轴位置等于鼠标移动距离 $(document).on('mousemove touchmove', function (e) { var _x = (e.pageX ? e.pageX : e.originalEvent.targetTouches[0].pageX) - x; if (isMove) { if (_x > 0 && _x <= maxWidth) { handler.css({'left': _x}); drag_bg.css({'width': _x}); }else if(_x > maxWidth){ //鼠标指针移动距离达到最大时清空事件 dragOk(); } } e.preventDefault(); e.stopPropagation(); }).on('mouseup touchend', function (e) { isMove = false; var _x = (e.pageX ? e.pageX : e.originalEvent.changedTouches[0].pageX) - x; if(_x < maxWidth){ //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置 handler.css({'left': 0}); drag_bg.css({'width': 0}); } handler.addClass('handler_on'); drag_bg.addClass('drag_bg_on'); }); //清空事件 function dragOk(){ handler.removeClass('handler_bg').addClass('handler_ok_bg').css('left', maxWidth+'px'); text.text('验证通过'); text.css('color', '#fff'); drag_bg.css('width',maxWidth+'px'); handler.unbind('mousedown').unbind('touchstart'); $(document).unbind('mousemove').unbind('touchmove'); $(document).unbind('mouseup').unbind('touchend'); validate = true; $('.btn-smscode').removeAttr('disabled').removeClass('disabled'); } }; })(jQuery);