欢迎莅临 SUN WU GANG 的园子!!!

世上无难事,只畏有心人。有心之人,即立志之坚午也,志坚则不畏事之不成。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  470 随笔 :: 0 文章 :: 22 评论 :: 30万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

示例一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue 事件的基本使用</title>
    <script type="text/javascript" src="../Js/vue.js"></script>
</head>
 
<body>
    <!-- id 容器 root -->
    <div id="root">
        <h1>欢迎来到:{{name}}</h1>
        <button v-on:click="showInfo">点我提示哦</button>
        <hr />
        <button @click="showInfo">点我也提示的哈</button>
        <hr />
        <button @click="showParamsInfo($event,'我是参数666')">可入参提示哦</button>
    </div>
 
</body>
 
</html>
<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        // 对象信息
        data: {
            name: '开心Vue',
        },
        // 方法信息
        methods: {
            showInfo() {
                alert('事件触发成功!')
            },
            showParamsInfo(event, str) {
                alert('事件触发成功!' + str)
            },
 
        }
 
    })
    console.log(vm)
</script>

 总结:事件的基本使用

  1. 使用v-on:xxx 或 @xxx 绑定事件,其中xxx是事件名称;
  2. 事件的回调需要配置在methods对象中,最终会在vm上;
  3. methods中配置的函数,不要用箭头函数,否则this就不是vm了,会变为window
  4. methods中配置的函数,都是被Vue所管理的函数,this的指向是vm或组件实例对象
  5. @click='demo'和@click='demo($event)'效果是一致的,但后者可传参(传参时,$event用于保证其不丢失--,如果不添加,同时传多个参数,会导致丢失)
     

Vue中的事件修饰符:修饰符可以连续写

  1. prevent:阻止默认事件(常用,例如<a>标签中的 href访问,默认会执行,引入该修饰符后,提示后即可实现不再访问)
  2. stop:阻止时间冒泡(常用)
  3. once:事件只能触发异常(常用)
  4. capture:使用事件的捕获模式
  5. self:只有event.target是当前操作的元素时才触发事件
  6. passive:事件的默认行为立即执行,无需等待事件回调执行完毕(平板、移动端用的相对多一些)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue 事件修饰符</title>
    <script type="text/javascript" src="../Js/vue.js"></script>
</head>
 
<body>
    <!-- id 容器 root -->
    <div id="root">
        <h1>欢迎来到:{{name}}</h1>
 
        <button v-on:click="showInfo">点我提示哦</button>
        <hr />
        <!-- <a v-bind:href="url" @click="showInfo">百度一下</a> -->
 
        <!-- prevent 为事件修饰符 阻止默认行为 -->
        <a v-bind:href="url" @click.prevent="showInfo">百度一下</a>
        <hr />
        <!-- 阻止事件冒泡 -->
        <div @click="showInfo">
            <button v-on:click.stop="showInfo">点我提示哦</button>        </div>
        <hr />
        <!-- 事件只触发一次 -->
        <button v-on:click.once="showInfo">点我提示一次哦</button>
        <hr />
    </div>
 
</body>
 
</html>
<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        // 对象信息
        data: {
            name: '开心Vue',
            url: 'https://www.baidu.com/',
        },
        // 方法信息
        methods: {
            showInfo (e) {
                // 提示后阻止继续执行事件
                // e.preventDefault()   // 可使用 @click.prevent 代替
 
                alert('你好 心仪')
            },
 
 
        }
 
    })
    console.log(vm)
 
</script> 
       <!-- <button @click.prevent.stop="showInfo">点我提示哦</button> -->

键盘事件

  1. Vue中常用的按键别名:
    • 回车,enter
    • 删除,delte——捕获删除和退格键
    • 退出,esc
    • 空格,space
    • 换行,tab(必须配合keydown使用)
    • up,上
    • down,下
    • left,左
    • right,右
  2. Vue未提供别名的按键,可以使用按键原始的key(console.log(e.keycode))值去绑定,但需要注意转为kebab-case——短横线命名
  3. 系统修饰键(用法特殊):ctrl、alt、shift、meta(windows键)
    • 配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发
    • 配合keydown使用:正常触发事件
  4. 也可以使用keycode去指定具体的按键——不推荐
  5. Vue.config.keycodes.自定义键名 = 键码,可以去定制按键别名

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue 键盘事件</title>
  <script type="text/javascript" src="../Js/vue.js"></script>
</head>
 
<body>
  <!-- id 容器 root -->
  <div id="root">
    <h1>欢迎来到:{{name}}</h1>
    <hr />
    <!-- keyup keydown -->
    实现方式1:<input type="text" placeholder="按下回车提示输入1" @keyup="showLog">
    <hr />
    实现方式2:<input type="text" placeholder="按下回车提示输入2" @keyup="showLog($event)">
    <hr />
    实现方式3:<input type="text" placeholder="按下回车提示输入3" @keyup.enter="showLog">
    <hr />
    实现tab方式:<input type="text" placeholder="按下tab提示输入" @keydown.tab="showLog">
 
    <hr />
    系统修饰键(用法特殊):ctrl、alt、shift、meta(windows键)<br />
    配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发<br />
    实现ctrl方式1:<input type="text" placeholder="按下ctrl + 其他并释放其他键,提示输入" @keyup.ctrl="showLog">
    <hr />
    配合keydown使用:正常触发事件<br />
    实现ctrl方式2:<input type="text" placeholder="按下ctrl提示输入" @keydown.ctrl="showLog">
    <hr />
    自定义键盘按键别名--测试示例<br />
    <input type="text" placeholder="请输入,测试自定义回车按键" @keydown.myenter="showLog">
  </div>
 
</body>
 
</html>
<script type="text/javascript">
  Vue.config.keyCodes.myenter = 13
  const vm = new Vue({
    el: '#root',
    // 对象信息
    data: {
      name: '开心Vue',
      url: 'https://www.baidu.com/',
    },
    // 方法信息
    methods: {
      showInfo (e) {
        // 提示后阻止继续执行事件
        // e.preventDefault()   // 可使用 @click.prevent 代替
 
        alert('你好 心仪')
      },
      showLog (e) {
        // console.log(e.target.value)
        console.log('code==' + e.keyCode)//按键编码
        console.log('名称==' + e.key)//按键名称
        console.log(e.target.value)
        if (e.keyCode !== 13)//enter 回车 13
        {
          return
        }
 
      },
 
 
    }
 
  })
  console.log(vm)
 
</script>

注意:

<input type="text" placeholder="按下ctrl + 其他并释放其他键,提示输入" @keyup.ctrl="showLog">——表示ctrl + 键盘所有键
<input type="text" placeholder="按下ctrl + 其他并释放其他键,提示输入" @keyup.ctrl.x="showLog">——表示ctrl + x
posted on   sunwugang  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示