Vue中事件修饰符与键盘事件

这篇具有很好参考价值的文章主要介绍了Vue中事件修饰符与键盘事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

事件修饰符

prevent:阻止默认事件

stop:阻止事件冒泡

once:事件只触发一次

capture:使用事件的捕获模式

 self:与当前事件一致时触发

passive:事件的默认行为立即执行

  键盘事件


事件修饰符

Vue中的事件修饰符:

1、prevent:阻止默认事件;

2、stop:阻止事件冒泡;

3、once:事件只触发一次;

4、capture:使用事件的捕获模式;

5、self:只有event.target是当前操作的元素时才触发事件;(只有和当前事件触发的标签一致时才会触发)

6、passive:事件的默认行为立即执行,无需等待事件回调执行完毕

prevent:阻止默认事件

点完之后不会发生默认事件

 <script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>

<div id="root">
<!--    .prevent阻止默认行为-->
    <a :href="url" @click.prevent="show">点击去百度</a>
</div>


<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        data: {
            url:"http://baidu.com"
        }
    }
</script>

点完超链接不会发生跳转,因为prevent阻止了a标签的默认事件(跳转)

stop:阻止事件冒泡

div和button都有show事件,当点击按钮时,button会触发show,执行完成后,冒泡到外层,div的show也会触发

<!--    .stop阻止事件冒泡-->
    <div @click="show">
        <button @click.stop="show">小按钮</button>
    </div>

<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        methods:{
          show(e){
              console.log(e.target)
             alert("hello")
          }
    }
<script>

加上了stop,阻止了button的冒泡,所以div不会触发show事件。

once:事件只触发一次

<div id="root">
    <!--  .once只执行一次-->
    <button @click.once="show">一次按钮</button>
<div>


<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        data: {
            url:"http://baidu.com"
        },
        methods:{
          show(e){
              console.log(e.target)
             alert("hello")
          }
   }
</script>

Vue中事件修饰符与键盘事件

 默认是点一次触发一次事件,但是加上了once后只会触发一次,(页面加载完后点击n次只触发第一次)

capture:使用事件的捕获模式

<head>
    <meta charset="UTF-8">
    <!--vue-->
    <script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>

    <style>
        *{
            margin-top: 5px;
        }
         .div1{
             padding: 5px;
             background-color: deepskyblue;
         }

        .div2{
            padding: 5px;
            background-color: orange;
        }
    </style>

</head>



<div id="root">

<!--    .capture 使用捕获模式,捕获是从外向内,冒泡是从内向外-->
    <div class="div1" @click.capture="div1">
        div1
        <div class="div2" @click="div2">
            div2
        </div >

    </div>


<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        methods:{
            div1(){
              console.log(1)
            },
            div2(){
                console.log(2)
            }
</script>

正常情况下是先进行事件的捕获,这个过程是有外到内的,捕获完成后,该事件触发,在冒泡到外层。

没加capture时,点击div2,会打印出2 1,这个是冒泡产生的结果

Vue中事件修饰符与键盘事件

 加上capture后

Vue中事件修饰符与键盘事件

 self:与当前事件一致时触发

.self  event.target是当前的对象时才会触发 只有和他一样的标签时才会触发
  冒泡冒上去的还是button对象,而不会变成div

<div id="root"> 
 <!--  .self  event.target是当前的对象时才会触发 只有和他一样的标签时才会触发-->
    <!--   冒泡冒上去的还是button对象,而不会变成div-->
    <div @click.self="show">
        <button @click="show">self按钮</button>
    </div>
</div>

上面的加上.self,show事件只会触发一次,层的div不会被触发。

passive:事件的默认行为立即执行

passive立即执行,不会等到回调函数执行完毕才执行,默认情况是回调函数执行完后才会执行事件的行为。

    <style>
     ul{
            background-color: gold;
            height: 200px;
            width: 200px;
            /*位置不够时,自动滚动*/
            overflow: auto;
        }
        li{
            height: 100px;
           width:100px;
        }
    </style>

<div id="root">
<!--scroll只要发生了滑动就会执行,滚条鼠标和上下键 当到达底部继续滑动不会继续执行-->
<!--    wheel属性 只有当鼠标滑动才会执行 当到达底部继续滑动鼠标还会继续执行-->
<!-- .passive无须等待回调函数执行完毕,立即执行这个属性,这里为滑动,则立即滑动-->
    <ul @wheel.passive="flow">
        <li>1</li>
        <li>2</li>
        <li>3</li>

    </ul>
</div>

<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        data: {
            url:"http://baidu.com"
        },
        methods:{
            flow(){
              for( i=0;i<10000;i++) {
                  console.log("滑动..")
              }
            }
        }

    });

scroll只要发生了滑动就会执行,滚条鼠标和上下键 当到达底部继续滑动不会继续执行
   wheel属性 只有当鼠标滑动才会执行 当到达底部继续滑动鼠标还会继续执行 
.passive无须等待回调函数执行完毕,立即执行这个属性,这里为滑动,则立即滑动 

单独的scroll也有passive效果

 Vue中事件修饰符与键盘事件

  键盘事件

1、Vue中常见的按键别名:

  • 回车--enter
  • 删除--delete(捕获删除和退格键)
  • 退出---esc
  • 空格--space
  • 换行--tab
  • 上--up
  • 下--down
  • 左--left
  • 右--right

2、Vue未提供的别名按键,可以使用按键原始的值去绑定,但注意要为kebab-case(短线命名,如大小写切换的按键CapsLock,要绑定就为caps-lock)

3、系统修饰键(用法特殊):ctrl、alt、shift、meta(win键)

  • 配合keyup使用时:按下这个修饰键的同时,在按下其他键,随后释放其他键,事件才别触发
  • 配合keydown使用时:按下即生效,正常触发事件

4、也可以使用keyCode指定具体的按键(如:@keydown.13="xxx"),但是不推荐,因为有些键盘的keyCode值不一值

5、Vue.config.keyCodes.自定义键名=键码

<div id="root">
<input type="text"  placeholder="输入并回车" @keydown.kc="kdown" >
</div>

<script type="text/javascript">
    Vue.config.keyCodes.kc=13//给回车定义了一个别名kc
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>键盘事件</title>
    <!--vue-->
    <script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>

</head>

<div id="root">
<input type="text"  placeholder="输入并回车" @keydown.enter="kdown" @keydown="keydown">
</div>


<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        data: {},
        methods:{
            kdown(e){
                console.log(e.target.value)
            },
            keydown(e){
         //打印键的名和键的值
                console.log(e.key,e.keyCode)
            }

        }

    });
    console.log(vm)

</script>
</html>

Vue中事件修饰符与键盘事件

事件总结

可以在一个绑定事件中设置多个属性,如: <button @click.stop.prevent="show">小按钮</button>文章来源地址https://www.toymoban.com/news/detail-495181.html

到了这里,关于Vue中事件修饰符与键盘事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Uniapp,Vue】阻止父元素事件覆盖子元素事件

    有个需求,点击一个元素,让弹出框显示,点击弹出框以外的区域,就关闭弹出框,如下代码所示。 但是这样有个问题,就是当弹出框显示以后,点击弹出框的区域也会触发父元素的点击事件,使得 ifshow=false 解决方法: 在子组件事件加个修饰 stop ,就会相互隔绝父子事件

    2024年02月16日
    浏览(34)
  • vue快速入门(十六)事件修饰符

    注释很详细,直接上代码 上一篇 新增内容 事件修饰符之阻止冒泡 事件修饰符之阻止默认行为 源码 效果演示 下一篇

    2024年04月13日
    浏览(46)
  • uniapp小程序 用@touchmove.stop.prevent=““阻止滑动穿透 但是会影响弹出层内容滑动

    之前加 scroll-view 也不好使 向上滑动也不动 后来加了css  .scroll-view{max-height: 608rpx; overflow-y: scroll;} ******必加******

    2024年02月11日
    浏览(44)
  • 【Vue3 知识第四讲】数据双向绑定、事件绑定、事件修饰符详解

    什么是数据双向绑定? 当数据发生变化的时候,视图会相应的发生变化 当视图发生改变的时候,数据也会相应的同步变化 数字化管理平台 Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 权限系统-商城 个人博客地址 双向绑定的指令 ​ v-model 指令实现数据双向绑定 双向绑定使用场景 ​

    2024年02月09日
    浏览(65)
  • Vue:@click.stop -- 阻止事件向父级元素传递

    最近遇到这么一个问题:有一个父div,包含一个子div。要求单击父div时执行fun()函数,而单击子div时不执行fun()函数。 可以使用 @click.stop 阻止事件向父级元素传递 在Vue中, @click 是一个指令,用于监听元素的点击事件。 @click.stop 是其中的一个修饰符,它的作用是阻止事件冒泡

    2024年02月11日
    浏览(45)
  • Vue鼠标点击事件和键盘事件

    目录 Vue中的鼠标点击事件修饰符: vue的@click.prevent vue的@click.stop vue的@click.capture vue的@click.once vue的@click.self vue的@click.passive  vue的键盘相应事件 @keydown - 按下键盘上的任意一个键时触发的事件。 @keyup - 松开键盘上的任意一个键时触发的事件。 @keypress - 当按下字符键时触发的

    2024年02月06日
    浏览(90)
  • Vue的鼠标键盘事件

    鼠标事件(将v-on简写为@) 键盘事件 输入框事件 但是element-ui在实际使用时,前四条触发方法全部都是input方式( 在 Input 值改变时触发 )触发,遂使用原生的@blur才完成效果 表单输入相关修饰符  .lazy     input 输入完毕时 .number   input只获取数字类型的输入 .trim   去除用户输入中

    2024年02月07日
    浏览(48)
  • Vue学习:键盘事件

    input表单占位符-显示输入先的提示文本-placeholder属性 键盘事件@keydown——按下 不需要松手 @keyup:按下+松手 根据按键编码进行判断 --输出event上有一个属性-keyCode -按键编码--回车=13 在vue上自带,回车修饰 enter 也就是别名:vue给常用的按键取了别名--一共有9个         回车

    2024年02月08日
    浏览(30)
  • vue键盘和鼠标事件

    1、键盘事件 2、组合按键 3、鼠标事件 可以下列方法判断按下鼠标哪个键

    2024年02月13日
    浏览(46)
  • Vue键盘事件的使用

    在vue中,我们经常会用到键盘事件,不管是我们按下某个键,其实都是一次键盘事件的调用,下面就介绍下Vue中的键盘事件 先写一段代码,这里我选择的键盘事件是keyup,当然用keydown也是没问题的 问题来了,什么按键都能触发事件,我们期望的是只能按下回车键才能打印输入

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包