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 相关文章推荐
取选中的radio的值
Jan 11 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
May 24 Javascript
表单元素的submit()方法和onsubmit事件应用概述
Feb 01 Javascript
javascript中match函数的用法小结
Feb 08 Javascript
js使用setTimeout实现定时炸弹的方法
Apr 10 Javascript
jquery中添加属性和删除属性
Jun 03 Javascript
jquery实现点击展开列表同时隐藏其他列表
Aug 10 Javascript
利用Jquery队列实现根据输入数量显示的动画
Sep 01 Javascript
angular使用bootstrap方法手动启动的实例代码
Jul 18 Javascript
Angular刷新当前页面的实现方法
Nov 21 Javascript
ES6入门教程之Array.from()方法
Mar 23 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
Nov 01 Javascript
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
新版PHP极大的增强功能和性能
2006/10/09 PHP
MySQL授权问题总结
2007/05/06 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
javascript天然的迭代器
2010/10/29 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
python设置环境变量的作用整理
2020/02/17 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
JavaScript获取URL参数的方法分享
2022/04/07 Javascript