Code Monkey home page Code Monkey logo

vue-drag-verify's Introduction

基于vue-drag-verify二次开发的vue组件

需对父元素或html设置user-select: none

demo

使用方法
  1. 引入升级包

    a. 使用npm(暂不支持vue3)

    // 基本滑块验证组件
    npm i vue-drag-verify2 -S
    // 图片滑块组件
    npm i vue-drag-verify-img -S
    // 基本滑块验证组件(拼图)
    npm i vue-drag-verify-img-chip -S
    // 旋转图片滑块组件
    npm i vue-drag-verify-img-rotate -S
    

    b. 按需引入对应组件(支持vue3,适合二次开发)

    // 基本滑块验证组件
    import dragVerify from "@/components/dragVerify";
    // 图片滑块组件
    import dragVerifyImg from "@/components/dragVerifyImg";
    // 图片滑块组件(拼图)
    import dragVerifyImgChip from "@/components/dragVerifyImgChip";
    // 旋转图片滑块组件
    import dragVerifyImgRotate from "@/components/dragVerifyImgRotate";
    
    components{
       dragVerify,
       dragVerifyImg,
       dragVerifyImgChip,
       dragVerifyImgRotate
    }
    
  2. 引入以下代码

main

<drag-verify
  ref="dragVerify"
  :isPassing.sync="isPassing2"
  text="请按住滑块拖动"
  successText="验证通过"
  handlerIcon="el-icon-d-arrow-right"
  successIcon="el-icon-circle-check"
  >
</drag-verify>

main

<drag-verify-img 
  ref="dragVerify"
  :imgsrc="img"
  :isPassing.sync="isPassing"
  :showRefresh="true"
  text="请按住滑块拖动"
  successText="验证通过"
  handlerIcon="el-icon-d-arrow-right"
  successIcon="el-icon-circle-check"
  @refresh="reimg"
  @passcallback="pass"
  >
</drag-verify-img>

main

如图片与项目非同源,需要图片服务设置header("Access-Control-Allow-Origin: *");

<drag-verify-img-chip 
  ref="dragVerify"
  :imgsrc="img"
  :isPassing.sync="isPassing"
  :showRefresh="true"
  text="请按住滑块拖动"
  successText="验证通过"
  handlerIcon="el-icon-d-arrow-right"
  successIcon="el-icon-circle-check"
  @refresh="reimg"
  @passcallback="pass"
  >
</drag-verify-img-chip>

main

<drag-verify-img-rotate 
  ref="dragVerify"
  :imgsrc="img"  
  :isPassing.sync="isPassing"
  :showTips="true"
  text="请按住滑块拖动"
  successText="验证通过"
  handlerIcon="el-icon-d-arrow-right"
  successIcon="el-icon-circle-check"
  @refresh="reimg"
  >
</drag-verify-img-rotate>

vue3使用

  1. .sync :isPassing.sync="isPassing2" v-model:isPassing="isPassing2"
  2. v-slot <i slot="textBefore"></i> <template #slot><i></i></template>

vue-drag-verify's People

Contributors

yimijianfang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

vue-drag-verify's Issues

vue 3

Dear
I got this error
main.vue?51a8:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '_c')
I did not understand your meaning of
[v-slot] <template #slot>
Is that for vue-drag-verify-img-chip
Could you please make a component example with all function for vue 3
thx

imgsrc

it is a very nice plug-in
I made an src in the static folder and an img subfolder and I uploaded some pictures but it does not work. Could you please explain more about :imgsrc="img" in dragVerifyImgChip.

建议在html根目录来绑定mousemove和mouseup事件

自己用的时候发现 : 移动滑块时 脱离滑块区域就会重置. 这样导致我小心翼翼的拖动滑块才能验证通过,客户反馈体验感很不好

所以绑定在dom上的mousemove mouseup去掉换成了
document.getElementsByTagName('html')[0].addEventListener('mousemove', this.dragMoving)
document.getElementsByTagName('html')[0] .addEventListener('mouseup', this.dragFinish)

可能有一个组件冲突

我在使用你的组件的时候可能碰到了一个组件冲突。
冲突组件:vuelidate(表单验证组件 )组件地址
本地组件名:drag-verify-img
在调用drag-verify-img中的reset方法时,vuelidate组件出现了this.$options为undefined错误,本地组件出问题的代码在
reImg: function() { this.$emit("update:isPassing", false); const oriData = this.$options.data(); for (const key in oriData) { if (oriData.hasOwnProperty(key)) { this.$set(this, key, oriData[key]); } } var handler = this.$refs.handler; var message = this.$refs.message; handler.style.left = "0"; this.$refs.progressBar.style.width = "0"; handler.children[0].className = this.handlerIcon; message.style["-webkit-text-fill-color"] = "transparent"; message.style.animation = "slidetounlock 3s infinite"; message.style.color = this.background; this.$refs.moveBar.style.left = "0px"; },
中,我分析后怀疑是for循环这一段
const oriData = this.$options.data(); for (const key in oriData) { if (oriData.hasOwnProperty(key)) { this.$set(this, key, oriData[key]); } }
出了问题,我现在强制修改了vuelidate的内容暂时是解决了问题。如果有兴趣可以试着修复一下问题,稍后我有时间会写一个可以复现这个问题的demo给你

滑块拖不动问题

我的步骤是:
1.import dragVerifyImgChip from 'vue-drag-verify-img-chip'
2. components: {dragVerifyImgChip},
3.使用组件
目前是只出现了如下这张图
image
然后拖不动滑块,是不是还需要引入css?全程没有报错

Cannot read properties of undefined (reading 'style')

vue-drag-verify-img-chip 成功后出现这个问题

<el-dialog title="" :visible.sync="dialogVisible" width="400px" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" custom-class="vueDragVerifyImgChipBox" > <VueDragVerifyImgChip v-if="dialogVisible" ref="vueDragVerifyImgChipRef" :imgsrc="localUrl" :isPassing.sync="isPassing" :showRefresh="true" :barWidth="40" :width="360" text="请按住滑块拖动" successText="验证通过" handlerIcon="el-icon-d-arrow-right" successIcon="el-icon-circle-check" @passcallback="passcallback" > </VueDragVerifyImgChip> </el-dialog>

报错index.js?157d:1 Uncaught TypeError: Cannot read properties of undefined (reading 'style') at eval (index.js?157d:1:1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.