Vue表单及表单绑定方法


Posted in Javascript onSeptember 04, 2018

基础用法

可以用 v-model 指令在表单 <input> 及 <textarea> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

注:

1.v-model 会忽略所有表单元素的 value、checked、selected 特性的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值。

2.对于需要使用输入法 (如中文、日文、韩文等) 的语言,你会发现 v-model 不会在输入法组合文字过程中得到更新。如果你也想处理这个过程,请使用 input 事件。

输入框

案例1

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 输入框</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
 <p>input 元素:{{ message }}</p>
 <input v-model="message" placeholder="编辑我……">
 
 <p style="white-space: pre">textarea 元素:{{ message2 }}</p>
 <textarea v-model="message2" placeholder="多行文本输入……"></textarea>
</div>
 
<script>
new Vue({
 el: '#app',
 data: {
 message: 'you can try it ',
	message2: '多行语句\r\n welcome here'
 }
})
</script>
</body>
</html>

Vue表单及表单绑定方法

复选框

可以结合计算属性,输出自己想要的效果。

案例2:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 复选框</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
 <p>单个复选框:</p>
 <input type="checkbox" id="checkbox" v-model="checked">
 <label for="checkbox">{{ isClick }}</label>
	
 <p>多个复选框:</p>
 <input type="checkbox" id="baidu" value="Baidu" v-model="checkedNames">
 <label for="baidu">Baidu</label>
 <input type="checkbox" id="google" value="Google" v-model="checkedNames">
 <label for="google">Google</label>
 <input type="checkbox" id="taobao" value="Taobao" v-model="checkedNames">
 <label for="taobao">taobao</label>
 <br>
 <span>选择的值为: {{ checkedNames }}</span>
</div>
 
 
<script>
new Vue({
 el: '#app',
 data: {
	checked : false,
 checkedNames: []
 },
	computed:{
		isClick:function(){
			return this.checked?"you clicked me ":"you not cleck me"
		}
	}
})
</script>
</body>
</html>

Vue表单及表单绑定方法

单选按钮

以下实例中演示了单选按钮的双向数据绑定:

案例3

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 单选按钮</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
 <input type="radio" id="men" value="men" v-model="picked">
 <label for="men">男人</label>
 <br>
 <input type="radio" id="women" value="women" v-model="picked">
 <label for="women">女人</label>
 <br>
 <span>你喜欢: {{ finalChose }}({{picked}})</span>
</div>
 
<script>
new Vue({
 el: '#app',
 data: {
	picked : 'men'
 },
	computed:{
		finalChose:function(){
			return this.picked==='men'?"男人":"女人"
		}
	}
})
</script>
</body>
</html>

Vue表单及表单绑定方法

select 列表

以下实例中演示了下拉列表的双向数据绑定:

案例4

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - select 列表</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
 <select v-model="selected" name="fruit">
 <option value="" disabled >选择一种水果</option>
 <option value="banana">香蕉</option>
 <option value="apple">苹果</option>
 </select>
 
 <div id="output">
 选择的水果是: {{selected}}
 </div>
</div>
 
<script>
new Vue({
 el: '#app',
 data: {
	selected: '' 
 }
})
</script>
</body>
</html>

Vue表单及表单绑定方法

用 v-for 渲染的动态选项:

<meta charset="utf-8">
<title>Vue 测试实例 - select 列表</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
 <select v-model="selected" name="fruit" >
 <option v-for="option in options" v-bind:value="option.value" stype='width:400px'>
 {{option.text}}
 </option>
 </select>
 
 <div id="output">
 选择的水果是: {{selected}}
 </div>
</div>
 
<script>
new Vue({
 el: '#app',
 data: {
 selected: '',
 options:[
  {text:'选择一个水果',value:''},
  {text:'香蕉',value:'banana'},
  {text:'苹果',value:'apple'}
 ] 
 },
})
</script>
</body>
</html>

Vue表单及表单绑定方法

修饰符

.lazy

在默认情况下, v-model 在 input 事件中同步输入框的值与数据,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步:

<!-- 在 "change" 而不是 "input" 事件中更新 -->
<input v-model.lazy="msg" >

.number

如果想自动将用户的输入值转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number 给 v-model 来处理输入值:

<input v-model.number="age" type="number">

这通常很有用,因为在 type="number" 时 HTML 中输入的值也总是会返回字符串类型。

.trim

如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入:

<input v-model.trim="msg">

以上这篇Vue表单及表单绑定方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
浅析document.ready和window.onload的区别讲解
Dec 18 Javascript
引用外部脚本时script标签关闭的写法
Jan 20 Javascript
在Mac OS下使用Node.js的简单教程
Jun 24 Javascript
js实现简单的省市县三级联动效果实例
Feb 18 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
Jul 25 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
Feb 10 Javascript
javascript变量提升和闭包理解
Mar 12 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
Jul 24 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
May 01 Javascript
详解vue组件之间的通信
Aug 30 Javascript
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
Sep 04 #Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 #jQuery
vue做移动端适配最佳解决方案(亲测有效)
Sep 04 #Javascript
基于element-ui的rules中正则表达式
Sep 04 #Javascript
微信小程序的部署方法步骤
Sep 04 #Javascript
vue2中使用sass并配置全局的sass样式变量的方法
Sep 04 #Javascript
Element UI 自定义正则表达式验证方法
Sep 04 #Javascript
You might like
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
Python 中的 else详解
2016/04/23 Python
Selenium定位元素操作示例
2018/08/10 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
如何用python写个模板引擎
2021/01/14 Python
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
外语专业毕业生自我评价分享
2013/10/05 职场文书
我的中国梦口号
2014/06/16 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
如何Python使用re模块实现okenizer
2022/04/30 Python
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android