vue.js---表单与v-model

基本用法

VUE提供了v-­model指令, 用于在表单类元素上双向绑定事件

input和textarea

可以用于input框,以及textarea等

注意: 所显示的值只依赖于所绑定的数据,不再关心初始化时的插入的value.

代码示例:

<body>
<div id = "app">
    v-model的input框用法:<br/>
    <input type = "text" v-model = "value"><br>
    {{value}}
    <hr/>
    v-model的textarea框的用法:<br/>
    绑定了v-model,初始化的指不会显示
    <textarea name = "" id = "" cols = "30" rows = "10" v-model = "msg">我是多行文本的初始化值</textarea><br/>
    {{msg}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data: {
          value: '',
            msg: '休闲鞋'
        }
    })
</script>
</body>

单选按钮

  1. 单个单选按钮,直接用v­-bind绑定一个布尔值,用v­-model是不可以的

  2. 如果是组合使用,就需要v-­model来配合value使用,绑定选中的单选框的value值,此处所绑定的初始值可以随意给,也可以不给初始值。

3.代码示例:

<body>
<div id = "app">
    单选框:<hr/>
    单个单选框:<br/>
    oneradio为true,默认选中单选框。
    <input type = "radio" name = "" v-bind:checked = "oneradio"><hr/>
    多个单选框:<br/>
    跑步:<input type = "radio" name = "checks" value = "跑步" v-model = "checkName">
    游泳:<input type = "radio" name = "checks" value = "游泳" v-model = "checkName">
    射击:<input type = "radio" name = "checks" value = "射击" v-model = "checkName">
    <br/>
    现在选中的是-----------{{checkName}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            oneradio: true,
            checkName: '跑步' //初始值
        }
    })
</script>
</body>

复选框

  1. 单个复选框,直接用定一个布尔值,可以用v-­model可以用v-­bind

  2. 多个复选框– 如果是组合使用,就需要v-­model来配合value使用,v-­model绑定一
    个数组—如果绑定的是字符串,则会转化为true,false,与所有绑定的复选框的checked属性相对应。

  3. 若绑定的是一个数组,则会把value存放在数组中。

  4. 代码示例

<body>
<div id = "app">
    单个复选框:<br/>
    v-bind:<input type = "checkbox" v-bind:checked = "onecheckbox"><br/>
    v-model:<input type = "checkbox" v-model = "onecheckbox">
    <hr>
    多个复选框:<br/>
    跑步:<input type = "checkbox" value = "跑步" v-model = "checks">
    游泳:<input type = "checkbox" value = "游泳" v-model = "checks">
    射击:<input type = "checkbox" value = "射击" v-model = "checks"><br/>
    现在选中哦了{{checks}}

</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: "#app",
        data: {
          onecheckbox: true,
            checks: [] //此处为数组和字符串的渲染是不一样的。
        }
    })
</script>
</body>

下拉框

  1. 如果是单选,所绑定的value值初始化可以为数组,也可以为字符串,有value直接优先匹配一个value值,没有value就匹配一个text值。但是value的值不会存放在数组中,而是转换成字符串。

  2. 如果是多选,就需要v­-model来配合value使用,v-­model绑定一个数组,与复选框类似,value的值会存放在数组里。

  3. v-­model一定是绑定在select标签上

  4. 代码示例

<body>
<div id = "app">
    单选的下拉框:
    <select v-model = "selected">
        <option value = "跑步">跑步</option>
        <option value = "游泳">游泳</option>
        <option value = "射击">射击</option>
    </select>
    <!-------现在选中的是 {{selected}}-->
    <hr/>
    多选的下拉框:
    <select v-model = "selected" multiple>
        <option value = "跑步">跑步</option>
        <option value = "游泳">游泳</option>
        <option value = "射击">射击</option>
    </select>
    -------现在选中的是 {{selected}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data:{
          selected: []
        }
    })
</script>
</body>

总结:

  1. 如果是单选,初始化最好给定字符串,因为v­model此时绑定的是静态字符串或者布尔值

  2. 如果是多选,初始化最好给定一个数组

绑定值

单选按钮

  1. 单选按钮:只需要用v-­bind给单个单选框绑定一个value值,此时,v­-model绑定的就是他的value值.
    <input type = "radio" v-model = "picked" v-bind:value = "value">------{{picked}}

复选框

<input type = "checkbox" v-model = "toggle" :true-value = "value1" :false-value = "value2">

下拉框

在select标签上绑定value值对option并没有影响.value绑在select和option上的结果是不一样的。

代码示例

<body>
<div id = "app">
    绑定值--单选按钮:<br/>
    <input type = "radio" v-model = "picked" v-bind:value = "value">------{{picked}}
    <hr/>
    绑定值--复选框按钮:(选中和不选中的Value不一样)<br/>
    <input type = "checkbox" v-model = "toggle" :true-value = "value1" :false-value = "value2">
    --------------{{toggle}}<br/>
    被选中--------------{{toggle == value1}}<br/>
    未被选中--------------{{toggle == value2}}
    <hr>
    绑定值--下拉框:<br/>
    <select v-model = "selected" :value = "{num:111}">
        <option value = "跑步">跑步</option>
        
    </select>
    -------现在选中的是 {{typeof selected}} --- {{selected}}
<!--
<select v-model = "selected" }">
        <option :value = "{num:111}">跑步</option>    
</select>
    -------现在选中的是 {{typeof selected}} --- {{selected.num}
-->
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data: {
          picked: true,
            value: '111',
            toggle: true,
            value1: '我被选中了',
            value2: '我没有被选中',
            selected: ''
        }
    })
</script>
</body>

修饰符

  • lazy
    v-­model默认是在input输入时实时同步输入框的数据,而lazy修饰符,可以使其在失去焦点或者敲回车键之后在更新
<input type = "text" v-model.lazy = "inputstr"> ----{{inputstr}}
  • number
    将输入 的字符串转化为number类型
<input type = "text" v-model.number = "isNumber">----{{ typeof isNumber}}
  • trim
    trim自动过滤输入过程中首尾输入的空格
<input type = "text" v-model.trim = "trimStr">----------{{trimStr.split('').length}}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342