| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 | /** * Created by lgy on 2017/10/21. 图片验证码 */(function($) {	$.fn.imgcode = function(options) {		// 初始化参数		var defaults = {			frontimg : "",			backimg : "",			refreshImg : "",			getsuccess : "",			getfail : "",			maskclose : true,			callback : "", // 回调函数			refreshcallback : "",			yHeight : 1		};		var opts = $.extend(defaults, options);		return this				.each(function() {					var $this = $(this);// 获取当前对象					var html = '<div class="code-k-div">'							+ '<div class="code_bg"></div>'							+ '<div class="code-con">'							+ '<div class="code-img">'							+ '<div class="code-img-con">'							+ '<div class="code-mask"><img class="code-front-img" src="'							+ opts.frontimg							+ '"></div>'							+ '<img class="code-back-img" src="'							+ opts.backimg							+ '"></div>'							+ '<div class="code-push"><i class="icon-login-bg icon-w-25 icon-push">刷新</i><span class="code-tip"></span></div>'							+ '</div>' + '<div class="code-btn">'							+ '<div class="code-btn-img code-btn-m"></div>'							+ '<span class="code-span">按住滑块,拖动完成上方拼图</span>'							+ '</div></div></div>';					$this.html(html);					$(".code-mask").css("margin-top",opts.yHeight+"px")					// 定义拖动参数					var $divMove = $(this).find(".code-btn-img"); // 拖动按钮					var $divWrap = $(this).find(".code-btn");// 鼠标可拖拽区域					var mX = 0, mY = 0;// 定义鼠标X轴Y轴					var dX = 0, dY = 0;// 定义滑动区域左、上位置					var isDown = false;// mousedown标记					if (document.attachEvent) {// ie的事件监听,拖拽div时禁止选中内容,firefox与chrome已在css中设置过-moz-user-select:												// none; -webkit-user-select:												// none;						$divMove[0].attachEvent('onselectstart', function() {							return false;						});					}					// 按钮拖动事件					$divMove.unbind('mousedown').on({						mousedown : function(e) {							// 清除提示信息							$this.find(".code-tip").html("");							var event = e || window.event;							mX = event.pageX;							dX = $divWrap.offset().left;							dY = $divWrap.offset().top;							isDown = true;// 鼠标拖拽启							$(this).addClass("active");							// 修改按钮阴影							$divMove.css({								"box-shadow" : "0 0 8px #666"							});						}					});					// 点击背景关闭					if (opts.maskclose) {						$this.find(".code_bg").unbind('click').click(								function() {									$this.html("");								})					}					// 刷新code码					$this.find(".icon-push").unbind('click').click(function() {						opts.refreshcallback();					});					// 鼠标点击松手事件					$divMove.unbind('mouseup')							.mouseup(									function(e) {										console.log(e)										var lastX = $this.find(".code-mask")												.offset().left												- dX - 1;										isDown = false;// 鼠标拖拽启										$divMove.removeClass("active");										// 还原按钮阴影										$divMove.css({											"box-shadow" : "0 0 3px #ccc"										});										returncode(lastX);									});					// 滑动事件					$divWrap							.mousemove(function(event) {																var event = event || window.event;								var x = event.pageX;// 鼠标滑动时的X轴								if (isDown) {									if (x > (dX + 20)											&& x < dX + $(this).width() - 20) {										$divMove.css({											"left" : (x - dX - 20) + "px"										});// div动态位置赋值										$this.find(".code-mask").css({											"left" : (x - dX - 20) + "px"										});									}								}							});					// 返回坐标系					function returncode(xpos) {						opts.callback({							xpos : xpos						});					}					// 验证数据					function checkcode(code) {						var iscur = true;						// 模拟ajax						setTimeout(function() {							if (iscur) {								checkcoderesult(1, "验证通过");								$this.find(".code-k-div").remove();								opts.callback({									code : 1000,									msg : "验证通过",									msgcode : "23dfdf123"								});							} else {								$divMove.addClass("error");								checkcoderesult(0, "验证不通过");								opts.callback({									code : 1001,									msg : "验证不通过"								});								setTimeout(function() {									$divMove.removeClass("error");									$this.find(".code-mask").animate({										"left" : "0px"									}, 200);									$divMove.animate({										"left" : "10px"									}, 200);								}, 300);							}						}, 500)					}					// 刷新图标					opts.refreshImg = function(data) {						console.log(data)						$this.find(".code-img-con .code-front-img").attr("src",								data.frontImg);						$this.find(".code-img-con .code-back-img").attr("src",								data.backGoundImg);					}					// 验证成功					opts.getsuccess = function() {						checkcoderesult(1, "验证通过");						setTimeout(function() {							$this.find(".code-k-div").remove();						}, 800);					}					// 验证失败					opts.getfail = function(txt) {						$divMove.addClass("error");						checkcoderesult(0, txt);						setTimeout(function() {							$divMove.removeClass("error");							$this.find(".code-mask").animate({								"left" : "0px"							}, 200);							$divMove.animate({								"left" : "10px"							}, 200);						}, 400);					}					// 验证结果					function checkcoderesult(i, txt) {						if (i == 0) {							$this.find(".code-tip").addClass("code-tip-red");						} else {							$this.find(".code-tip").addClass("code-tip-green");						}						$this.find(".code-tip").html(txt);					}				})	}})(jQuery);
 |