vue表单控件绑定(表单数据的自动收集)
v-model指令
你可以用 v-model 指令在表单控件元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇
但 v-model 本质上不过是语法糖,它负责监听用户的输入事件以更新数据,并特别处理一些极端的例子
v-model 并不关心表单控件初始化所生成的值。因为它会选择 Vue 实例数据来作为具体的值
<template>
<div id="app">
<input v-model="message" placeholder="edit me" />
<p>{{message}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
message: ''
}
}
}
</script>

多行文本输入框
在文本区域插值( <textarea></textarea> ) 并不会生效,应用 v-model 来代替
<template>
<div id="app">
<textarea v-model="message" placeholder="edit me" />
<!--style="white-space: pre"可以解析换行-->
<p style="white-space: pre">{{message}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
message: ''
}
}
}
</script>

复选框
单个勾选框,逻辑值
<template>
<div id="app">
<input type="checkbox" id="checkbox" v-model="checked" />
<label for="checkbox">{{checked}}</label>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
checked: false
}
}
}
</script>

多个勾选框,绑定到同一个数组
<template>
<div id="app">
<input type="checkbox" id="apple" value="apple" v-model="checkedName" />
<label for="apple">apple</label> <input type="checkbox" id="orange" value="orange" v-model="checkedName" />
<label for="orange">orange</label> <input type="checkbox" id="banana" value="banana" v-model="checkedName" />
<label for="banana">banana</label> <p>{{checkedName}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
checkedName: []
}
}
}
</script>

单选按钮
<template>
<div id="app">
<input type="radio" id="apple" value="apple" v-model="checkedName" />
<label for="apple">apple</label> <input type="radio" id="orange" value="orange" v-model="checkedName" />
<label for="orange">orange</label> <input type="radio" id="banana" value="banana" v-model="checkedName" />
<label for="banana">banana</label> <p>{{checkedName}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
checkedName: 'apple'
}
}
}
</script>

列表选择—单选列表/多选列表
<template>
<div id="app">
<select v-model="selected">
<option>apple</option>
<option>orange</option>
<option>banana</option>
</select> <p>{{selected}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
selected: 'apple'
}
}
}
</script>
多选绑定到一个数组(需要按住Ctrl进行多选)
<template>
<div id="app">
<select v-model="selected" multiple>
<option>apple</option>
<option>orange</option>
<option>banana</option>
</select> <p>{{selected}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
selected: []
}
}
}
</script>

动态选项,用 v-for 渲染
<template>
<div id="app">
<select v-model="selected">
<option v-for="option in options" :value="option.value">{{option.name}}</option>
</select> <p>{{selected}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
selected: 'a',
options: [
{name: 'apple', value: 'a'},
{name: 'orange', value: 'o'},
{name: 'banana', value: 'b'}
]
}
}
}
</script>

修饰符——lazy
在默认情况下, v-model 在 input 事件中同步输入框的值与数据 ,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步
在输入框失去焦点或者电脑窗口改变后或者按enter时,数据会同步更新
<template>
<div id="app">
<input type="text" v-model.lazy="message" />
{{message}}
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
message: ''
}
}
}
</script>

修饰符——number
如果想自动将用户的输入值(输入框输入的值都是字符串类型)转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number给 v-model 来处理输入值
<template>
<div id="app">
<input type="text" v-model.number="message" />
{{message}}
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
message: ''
}
}
}
</script>

修饰符—— trim
如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入
<template>
<div id="app">
<input type="text" v-model.trim="message" />
{{message}}
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
message: ''
}
}
}
</script>

修饰符—— prevent
阻止表单提交的默认事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>08_表单输入绑定</title>
</head>
<body>
<div id="demo">
<form action="/xxx" @submit.prevent="handleSubmit">
<span>用户名: </span>
<input type="text" v-model="username"><br> <span>密码: </span>
<input type="password" v-model="pwd"><br> <span>性别: </span>
<input type="radio" id="female" value="女" v-model="sex">
<label for="female">女</label>
<input type="radio" id="male" value="男" v-model="sex">
<label for="male">男</label><br> <span>爱好: </span>
<input type="checkbox" id="basket" value="basket" v-model="likes">
<label for="basket">篮球</label>
<input type="checkbox" id="foot" value="foot" v-model="likes">
<label for="foot">足球</label>
<input type="checkbox" id="pingpang" value="pingpang" v-model="likes">
<label for="pingpang">乒乓</label><br> <span>城市: </span>
<select v-model="cityId">
<option value="">未选择</option>
<option :value="city.id" v-for="(city, index) in allCitys" :key="city.id">{{city.name}}</option>
</select><br>
<span>介绍: </span>
<textarea rows="10" v-model="info"></textarea><br><br> <input type="submit" value="注册">
</form>
</div> <script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">
new Vue({
el: '#demo',
data: {
username: '',
pwd: '',
sex: '男',
likes: ['foot'],
allCitys: [{id: 1, name: 'BJ'}, {id: 2, name: 'SS'}, {id: 3, name: 'SZ'}],
cityId: '2',
info: ''
},
methods: {
handleSubmit () {
console.log(this.username, this.pwd, this.sex, this.likes, this.cityId, this.info)
alert('提交注册的ajax请求')
}
}
})
</script>
</body>
</html>
vue表单控件绑定(表单数据的自动收集)的更多相关文章
- Vue表单控件绑定
前面的话 本文将详细介绍Vue表单控件绑定 基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.v-model本质上不过是语法糖,它负 ...
- vue.js基础知识篇(3):计算属性、表单控件绑定
第四章:计算属性 为了避免过多的逻辑造成模板的臃肿不堪,可使用计算属性来简化逻辑. 1.什么是计算属性 <!DOCTYPE html><html lang="en" ...
- 表单控件绑定v-model
<!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...
- vue2.0 之表单控件绑定
表单控件绑定v-model 1.文本 <template> <div> <input type="text" name="" v- ...
- Vue#表单控件绑定
使用v-model 在表单控件上实现数据双向绑定. 单选:https://jsfiddle.net/miloer/bs49p0fx/ <input type="checkbox&quo ...
- Vue.js学习 Item9 – 表单控件绑定
基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.根据控件类型它自动选取正确的方法更新元素.尽管有点神奇,v-model 不过是语法糖,在用户输入事件中更新数据,以及特别处理一些 ...
- vue v-model 表单控件绑定
v-model 指令在表单控件元素上创建双向数据绑定,下面一一进行示例解释. 1.v-model 双向绑定文本 <!DOCTYPE html> <html> <head ...
- Vue.js-----轻量高效的MVVM框架(七、表单控件绑定)
话不多说,先上完整代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- Vue.js学习笔记 第七篇 表单控件绑定
本篇主要说明表单控件的数据绑定,这次没有新的知识点 文本框 1.普通文本框 <div id="app-1"> <p><input v-model=&q ...
随机推荐
- 微服务框架Lagom介绍之一
背景 Lagom是JAVA系下响应式 微服务框架,在阅读本文之前请先阅读微服务架构设计,Lagom与其他微服务框架相比,与众不同的特性包括: 目前,大多数已有的微服务框架关注于简化单个微服务的构建-- ...
- EF 事务(转载)
事务简单用法 文章一:https://www.cnblogs.com/wujingtao/p/5407821.html 1EF事务 事务就是确保一次数据库操作,所有步骤都成功,如果哪一步出错了,整个操 ...
- sping框架纯注解配置
1.相关注解 ①@Configuration注解-->添加了该注解在类上,就表明该类是spring的配置类.该类的作用是用来替代原来的XML配置文件的. 通过配置类创建容器时,需要使用Annot ...
- http协议、web服务器、并发服务器(上)
目录 1. HTTP格式 1.1 HTTP GET请求的格式: 1.2 HTTP POST请求的格式: 1.3 HTTP响应的格式: 2. Web静态服务器-显示固定的页面 3. Web静态服务器-显 ...
- python中的tcp
目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 TCP通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议,传输控制协议(英语:Tr ...
- Http(s)与后台交互方式
前言 Http(s)是前后端交互的主要方式之一,交互技术主要有:Ajax(XMLHttpRequest).Fetch.地址跳转(window.open.location.href).Http(s)与后 ...
- 如何使用@vue/cli 3.0在npm上创建,发布和使用你自己的Vue.js组件库
译者按: 你可能npm人家的包过成千上万次,但你是否有创建,发布和使用过自己的npm包? 原文: How to create, publish and use your own VueJS Compo ...
- angular select2 下拉单选和多选的取值赋值
官网:http://select2.github.io/examples.html 兼容性: 引入文件 /select2.min.js /select2.min.css html <select ...
- Tomcat post参数长处理
如下图所示:增加maxPostSize="-1"属性即可
- RabbitMQ 在 web 页面 创建 exchange, queue, routing key
这里只是为了展示, 在实际开发中一般在消费端通过 注解来自动创建 消费端: https://www.cnblogs.com/huanggy/p/9695934.html 1, 创建 Exchange ...