Vue之事件处理与表单绑定


1.输入的事件处理

input框中的三个事件:
    input    当输入框进行输入的时候 触发的事件
    change   当元素的值发生改变时 触发的事件
    blur     当输入框失去焦点的时候 触发的事件



    
    Title
    


v-model的使用


{{msg}}

2.数据双向绑定

2.1 v-model的基本使用

# v-model 相当于 给input框 绑定value
  # placeholder是提示

Message is: {{ message }}

2.2 v-model的修饰符

# .lazy    等待input框的数据绑定后,发生改变后再变化
    在默认情况下,v-model 在每次input事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。
    你可以添加 lazy 修饰符,从而转为在 change 事件之后进行同步:

    
    

# .number    数字开头,只保留数字,后面的字母不保留;字母开头,都保留
    如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:

    
    这通常很有用,因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。
    如果这个值无法被 parseFloat() 解析,则会返回原始的值。

# .trim    去除首尾的空格
    如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:

    



    
    Title
    


trim的使用: {{msg}}

3.表单控制

# v-model 会根据控件类型自动选取正确的方法来更新元素,实现表单控制。
    它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。   
    
    v-model 会忽略所有表单元素的 value、checked、selected attribute的初始值,
    而总是将 Vue 实例的数据作为数据来源。应该通过JavaScript在组件的 data 选项中声明初始值。


# v-model 在内部为不同控件类型使用不同的property 并抛出不同的事件:
    text和textarea    使用 value 和 input 事件       ====  文本初始值+ input 事件
    checkbox和radio   使用 checked 和 change 事件    ====  勾选项的值+ change 事件
    select            使用 value 和 change 作为事件  ====  选择项的值+ change事件

    
    # 简之:
    	原生js获取对应input框的值,分别是 value,checked,value;
    	但是vue中,因为是双向数据绑定,直接点v-model绑定的变量就行了



    
    Title
    




记住用户名
保密

您选择的性别:{{picked}}
篮球 足球 棒球 桌球

您喜欢的球类:{{checkedHobby}}


您选择的是:{{ selected }}

4.input事件案例--输入过滤




    
    Title
    


  • {{item}}
  • 5.事件修饰符

    .stop	只处理自己的事件,阻止事件冒泡, 写在子控件中
    .self	只处理自己的事件,子控件冒泡的事件不处理, 写在父控件中
    
    .prevent   阻止默认事件	例如:阻止a链接默认跳转, 变成执行自己的方法
    .once	事件只会触发一次(适用于抽奖页面)
    
    
    
    
        
        Title
        
    
    
    
    • 我是li1,阻止了事件冒泡
    • 我是li2,不阻止事件冒泡
    致命诱惑

    6.按键修饰符

    # 按键事件
        keyup    键按下,并弹起时 才触发事件   # 常用
        keydown  键按下就触发事件
        
    # 按键修饰符
        # 常用
        .enter
        .esc
        .delete  (捕获 "删除" 和 "退格" 键)
        
        .tab
        .space
        .up
        .down
        .left
        .right
        .ctrl
        .alt
        .shift
        .meta	Windows上就是window键, Mac上是command 键
    
    
    
    
        
        Title
        
    
    
    
    # 也可以不传参,不知道为啥

    补充

    JS数组的过滤方法

    // .filter(匿名函数)   函数中,返回true就保留数据,false就去除数据
    
    
    var l=['a', 'at', 'atom', 'be', 'beyond', 'cs', 'csrf']
    var new_l=l.filter(function (item) {
        // 写逻辑
        var res=item.indexOf('at')  // indexOf 检测某个字符串在另一个字符串的索引位置,如果不在字符串中就返回-1,如果在就返回位置
        if (res>-1){
            return true
        }else {
    		return false
        }
    })
    
    console.log(new_l)
    
    
    // es6语法,箭头函数 替换原来匿名函数,箭头函数内的this和外部的是一个this,普通匿名函数内部的this和外部的this不是一个
    // 箭头函数: (参数) => {}
    
    var new_l=l.filter( (item) => {
        var res=item.indexOf('at') 
        if (res>-1){
            return true
        }else {
             return false
        }
    })
    
    vue