首页
学习
活动
专区
圈层
工具
发布

jquery 拖拽拼图验证

基础概念

jQuery 拖拽拼图验证是一种基于 jQuery 的前端交互验证方式,用户需要通过拖拽将一个碎片拼接到正确的位置来完成验证。这种方式可以有效防止自动化脚本的攻击,提高网站的安全性。

优势

  1. 用户体验好:拖拽操作直观易懂,用户操作简单。
  2. 安全性高:相比传统的验证码,拖拽拼图验证更难被自动化脚本破解。
  3. 灵活性强:可以根据需求自定义拼图的样式和难度。

类型

  1. 固定位置拼图:拼图碎片的位置是固定的,用户需要将碎片拖动到指定位置。
  2. 随机位置拼图:拼图碎片的位置是随机的,增加了验证的难度。

应用场景

  1. 网站登录:在用户登录时进行验证,防止恶意登录。
  2. 表单提交:在用户提交重要表单时进行验证,确保提交者是人类用户。
  3. 支付验证:在进行支付操作前进行验证,防止欺诈行为。

示例代码

以下是一个简单的 jQuery 拖拽拼图验证的示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery 拖拽拼图验证</title>
    <style>
        #puzzle {
            position: relative;
            width: 300px;
            height: 200px;
            border: 1px solid #ccc;
        }
        .puzzle-piece {
            position: absolute;
            width: 100px;
            height: 100px;
            background-color: #eee;
            border: 1px solid #ccc;
            cursor: move;
        }
        #target {
            position: absolute;
            width: 100px;
            height: 100px;
            background-color: #fff;
            border: 2px dashed red;
        }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <div id="puzzle">
        <div class="puzzle-piece" style="left: 0px; top: 0px;"></div>
        <div class="puzzle-piece" style="left: 100px; top: 0px;"></div>
        <div class="puzzle-piece" style="left: 200px; top: 0px;"></div>
        <div class="puzzle-piece" style="left: 0px; top: 100px;"></div>
        <div class="puzzle-piece" style="left: 100px; top: 100px;"></div>
        <div class="puzzle-piece" style="left: 200px; top: 100px;"></div>
        <div id="target" style="left: 100px; top: 100px;"></div>
    </div>

    <script>
        $(document).ready(function() {
            var target = $('#target');
            var pieces = $('.puzzle-piece');

            pieces.draggable({
                revert: 'invalid',
                containment: '#puzzle'
            });

            pieces.on('dragstop', function(event, ui) {
                var piece = $(this);
                var offset = piece.offset();
                var targetOffset = target.offset();

                if (offset.left === targetOffset.left && offset.top === targetOffset.top) {
                    piece.css('background-color', '#fff');
                    target.css('border-style', 'solid');
                    // 验证成功
                    alert('验证成功!');
                } else {
                    piece.draggable('option', 'revert', true);
                }
            });
        });
    </script>
</body>
</html>

可能遇到的问题及解决方法

  1. 拖拽不流畅:
    • 原因:可能是由于页面其他元素的干扰或者浏览器性能问题。
    • 解决方法:优化页面结构,减少不必要的 DOM 元素;使用 CSS3 动画代替 JavaScript 动画;确保浏览器版本较新。
  • 拖拽超出边界:
    • 原因:可能是由于 containment 属性设置不正确。
    • 解决方法:确保 containment 属性设置为包含拼图容器,如 #puzzle。
  • 拖拽后无法正确验证:
    • 原因:可能是由于验证逻辑错误或者元素位置计算不准确。
    • 解决方法:仔细检查验证逻辑,确保元素位置计算准确;可以使用调试工具查看元素的实际位置。

通过以上方法,可以有效解决 jQuery 拖拽拼图验证中可能遇到的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

微信小程序(游戏)----拖拽拼图(拖拽和切换功能的实现)

效果图 touchstart 获取当前触摸位置的坐标(x,y); 记录触摸点下view的各项坐标值; 记录触摸点下view的起点坐标,背景坐标,以及触摸点的坐标; 设置拖拽view为显示状态、设置起始坐标以及背景坐标为记录对应个坐标...this.currentY = e.touches[0].pageY; } touchmove 记录移动触摸点的当前坐标; 计算当前触摸点和起始触摸点的差距坐标; 记录当前触摸点下的view的各项坐标对象; 设置拖拽...currentPY: _this.originPY }) } touchend 切换背景坐标,将最后触摸点下view的背景坐标切换为开始触摸点下view的背景坐标; 设置拖拽...}) } }) } } }) }; } } 判断是否拼图成功...通过 JSON.stringify 方法将 this.typeArr 和 this.newTypeArr 转化比较,判断是否拼图成功!

2.1K30

实现拼图滑动验证码

实现拼图滑动验证码 拼图滑动验证码的纯前端简单实现,重要部分都已标注注释,如果需要配合后端可以参考此思路,后端处理图片生成一个带缺口的背景图与一个符合缺口的拼图,并将取得拼图块的位置记录到SESSION...,将图片与拼图传给前端展示,当用户拖动并松开鼠标后将鼠标轨迹与停留位置发送到后端,后端从SESSION中取得位置信息并与前端传递的位置进行对比,有需要的话可以分析此用户轨迹用以区分人机,如果位置偏差小于一定阈值则认为拼图成功...DOCTYPE html> 滑动拼图验证码 <link rel="stylesheet" type="text/css" href...撤销事件 if(Math.abs(slideBlock.offsetLeft - slideBlockMask.offsetLeft)验证成功..."); // 偏移距离小于2则认为成功 else alert("验证失败"); // 否则失败 slideBlock.style.left

2.9K11
  • Android实现滑块拼图验证码功能

    滑块拼图验证码应该算是很常见的功能了,验证码是可以区分用户是人还是机器。可以防止破解密码、刷票等恶意行为。本文将介绍Android拼图滑块验证码控件的实现过程。希望能帮助到大家。...实现步骤: 1、定义自定义属性; 2、确认目标位置,这里使用的是阴影图片来遮盖背景图片; 3、创建与目标位置相结合的滑块图片; 4、设置目标阴影图片和滑块图片可以随机旋转,并保持一致; 5、创建拖拽条...,使滑块随着拖拽条的拖拽而移动; 6、判断是否验证成功。...,使滑块随着拖拽条的拖拽而移动 //滑块监听 mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener...mDY.testPuzzle(); } }); 6、判断是否验证成功 /** * 验证是否拼接成功 */

    2.6K10

    jQuery Password Validation(密码验证)

    jQuery Password Validation(密码验证)插件扩展了 jQuery Validate 插件,提供了两种组件: 一种评价密码的相关因素的功能:比如大小写字母的混合情况、字符(数字、...一种使用评价功能显示密码强度的验证插件自定义方法。显示的文本可以被本地化。 您可以简单地自定义强度显示的外观、本地化消息显示,并集成到已有的表单中。 该插件目前版本是 1.0.0。...使用方式 如需使用 Password Validation(密码验证)插件,请添加一个 class "password" 到 input,同时添加显示强度的基本标记在表单的需要显示的地方: jquery.com/jquery-1.11.1.min.js"> // just for the demos, avoids form submit jQuery.validator.setDefaults({ debug

    2.5K20
    领券