前端开发那些事儿

vue事件与表单处理

2021-02-02  本文已影响0人  amanohina

事件处理 v-on指令

<button @click="fn2(200, $event)">按钮4</button>

<script>
    new Vue({
      el: '#app',
      data: {
        content: '这是默认内容'
      },
      methods: {
        fn2 (value, event) {
          console.log(value, event);
        }
      }
    })
  </script>

表单输入绑定 v-model

输入什么,显示什么

<body>
  <div id="app">
    <p>元素内容为:{{ value }}</p>
    <input type="text" v-model="value">
  </div>
  <script src="lib/vue.js"></script>
  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        value: ''
      }
    });
  </script>
</body>
在控制台使用vm.value也能改变输入框的内容,实现了双向绑定

输入框绑定

单选按钮绑定

复选框绑定

<body>
  <div id="app">
    <!-- 单个复选框进行双向数据绑定的演示 -->
    <p>单个复选框的值: {{ value4 }}</p>
    <input 
      type="checkbox" 
      value="选项内容" 
      id="one" 
      v-model="value4">
    <label for="one">选项内容</label>


    <!-- 多个复选框进行双向数据绑定的演示 -->
    <p>多个复选框的值:{{ value5 }}</p>
    <input 
      type="checkbox"
      id="cb1"
      value="选项1"
      v-model="value5"
      >
    <label for="cb1">选项1</label>
    <input 
      type="checkbox"
      id="cb2"
      value="选项2"
      v-model="value5"
      >
    <label for="cb2">选项2</label>
    <input 
      type="checkbox"
      id="cb3"
      value="选项3"
      v-model="value5"
      >
    <label for="cb3">选项3</label>
  </div>
  <script src="lib/vue.js"></script>
  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        value4: '',
        value5: []
      }
    });
  </script>
</body>
复选框的value值是布尔值

选择框绑定

v-model指令小结

修饰符

事件修饰符

.prevent修饰符

    <a @click.prevent href="https://kaiwu.lagou.com/">链接</a>

.stop修饰符

@click.prevent.stop

.once修饰符

<body>
  <div id="app">
    <button @click="fn">按钮1</button>
    <button @click.once="fn">按钮2</button>

  </div>
  <script src="lib/vue.js"></script>
  <script>
    new Vue({
      el: '#app',
      data: {

      },
      methods: {
        fn () {
          console.log('按钮被点击了');
        }
      }
    })
  </script>
</body>
按钮2的事件只能执行一次
学习更多的修饰符

https://cn.vuejs.org

按键修饰符

按键码

 <!-- 按下一个键,执行fn函数 -->
    <input type="text" @keyup="fn">
    <!-- 按键码设置方式,只能由数字1触发 -->
    <input type="text" @keyup.49="fn">
    <!-- 可以直接用字母操作,只按下a才有效果 -->
    <input type="text" @keyup.a="fn">

特殊按键

    <!-- esc才会触发 -->
    <input type="text" @keyup.esc="fn">
官网说明
按键修饰符也是可以连写的
    <!-- 点击了a或者b或者c都可以触发 -->
    <input type="text" @keyup.a.b.c="fn">

系统修饰符

  1. 系统按键指的是 ctrl 、alt 、shift 等按键
  2. 单独点击系统操作符无效
  3. 系统按键通常与其他按键组合使用
<body>
  <div id="app">
    <!-- <input type="text" @keyup.17.q="fn"> -->

    <input type="text" @keyup.ctrl.q="fn" v-model="inputValue">
  </div>
  <script src="lib/vue.js"></script>
  <script>
    new Vue({
      el: '#app',
      data: {
        inputValue: ''
      },
      methods: {
        fn (event) {
          console.log(event);
          this.inputValue = '';
        }
      }
    });
  </script>
</body>
代码的意思就是ctrl+p消除输入框的内容,底部也有event的打印
shift和alt与上一致
官网说明

鼠标按键修饰符

<!-- 鼠标左键 -->
    <button @click.left="fn">按钮1</button>
    <!-- 鼠标右键 -->
    <button @click.right="fn">按钮2</button>
    <!-- 滚轮按下 -->
    <button @click.middle="fn">按钮3</button>

v-model修饰符

.trim修饰符

.lazy修饰符

.number修饰符

<div id="app">
    <!-- 去除首尾两端的空格 -->
    <input type="text" v-model.trim="inputValue">
    <p>{{ inputValue }}</p>

    <!-- 懒操作,频繁的更新双向数据变为了需要失去焦点,且内容不同了才更新 -->
    <input type="text" v-model.lazy="inputValue">
    <p>{{ inputValue }}</p>

    <!-- 使用parseFloat将字符串转换为数字,如果输入的是字母则会返回原始内容 -->
    <input type="text" v-model.number="inputValue">
    <p>{{ inputValue }}</p>
  </div>
上一篇下一篇

猜你喜欢

热点阅读