Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题


Posted in Javascript onNovember 22, 2017

Vue.js可以很方便的实现数据双向绑定,所以在处理表单,人机交互方面具有很大的优势。下面给大家介绍Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题。

摘要: 表单标签取值问题中,单选按钮、复选按钮和下拉列表都比较特殊。这里总结一下vue.js中关于单选按钮、复选按钮和下拉列表不同情况的取值特殊性问题。

    表单标签取值问题中,单选按钮、复选按钮和下拉列表都比较特殊。这里总结一下vue.js中关于单选按钮、复选按钮和下拉列表不同情况的取值特殊性问题。

一、单选按钮

    单选按钮:单选按钮用 v-model 绑定填值属性用来表示checked,用于判断是否选中。

    当单选按钮没写value值时,在 vue.js 中将值赋为null。

    在普通标签中,当没写name时,html 会默认将没写name 的单选按钮分为一组;

    在vue中,即使没写name,只要单选按钮v-model绑定了同一个变量(如:gender),这些按钮也会被分为一组。但是习惯上,我们还是也写上name。

    在data中定义的变量gender的值将影响到单选按钮的默认选项,如: 本例子中gender:"女",默认选择女。

    js部分代码:

window.onload = function (){
 new Vue({
 el:"#app",
 data:{
  gender:"女"
 }
 });
}

    html部分代码:

<body>
 <div id="app">
 <!-- 
  单选按钮:单选按钮用 v-model 绑定填值属性用来表示checked,用于判断是否选中。
  当单选按钮没写value值时,在vue中将值赋为null
  在普通标签中,当没写name时,html 会默认将没写name 的单选按钮分为一组;
  在vue中,即使没写name,只要单选按钮v-model绑定了同一个变量(如:gender),这些按钮也会被分为一组。

但是习惯上,我们还是也写上name      

        在data中定义的变量gender的值将影响到单选按钮的默认选项,如: 本例子中gender:"女",默认选择女。

-->
 <input type="radio" id="man" name="gender" value="男" v-model="gender">
 <label for="man">男</label>
 <input type="radio" id="woman" name="gender" value="女" v-model="gender">
 <label for="woman">女</label>
 </div>
</body>

二、复选按钮

    复选按钮:单选按钮用 v-model 绑定填值属性用来表示checked,用于判断是否选中。

    当多选按钮没写value值时,在 vue.js 中将值赋为null。

    vue.js对于复选按钮如何取值取决于 v-model 绑定的变量的类型。

1、基本类型

    初始化时,v-model 绑定的是任意的基本类型(Number、String、Boolean、Null、Undefined),取值时会默认转为Boolean类型,true时表示选中,false表示未选中。

js段代码:

window.onload = function (){
 new Vue({
 el:"#app",
 data:{
  hobbies01:"",
  hobbies02:"...",
  hobbies03:false
 }
 });
}

html段代码:

<body>
 <div id="app">
 <!-- v-model 绑定的是基本类型 -->
 <input type="checkbox" name="hobbies" id="box01" value="敲代码" v-model="hobbies01">
 <label for="box01">敲代码</label>
 <input type="checkbox" name="hobbies" id="box02" value="写代码" v-model="hobbies02">
 <label for="box02">写代码</label>
 <input type="checkbox" name="hobbies" id="box03" value="撸代码" v-model="hobbies03">
 <label for="box03">撸代码</label>
 <hr/>
 </div>
</body>

效果截图:

Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题

    初始化时,hobbies01值为空字符串转化为Boolean类型时false,所以未选中;hobbies02值为字符串“....”,转化为Boolean类型是true,所以默认选中;hobbies03默认值是false,所以初始化时未选中。

    此后,每次点击多选按钮,hobbies01、hobbies02、hobbies03的值都是 true | false 变化。

2、数组

    初始化时,v-model 绑定的变量是数组类型时。vue 认为这个复选按钮是用于获取值,会以选择(鼠标点击)的顺序将对应的值写入到数组中。

js代码段:

window.onload = function (){
 new Vue({
 el:"#app",
 data:{
  hobbies:[]
 }
 });
}

html代码段:

<body>
 <div id="app">
 <!-- v-model 绑定时数组 -->
 <input type="checkbox" name="hobbies" id="box01" value="敲代码" v-model="hobbies">
 <label for="box01">敲代码</label>
 <input type="checkbox" name="hobbies" id="box02" value="写代码" v-model="hobbies">
 <label for="box02">写代码</label>
 <input type="checkbox" name="hobbies" id="box03" value="撸代码" v-model="hobbies">
 <label for="box03">撸代码</label>
 </div>
</body>

效果截图:

Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题

    初始化时 hobbies 是一个空数组。注意鼠标点击顺序和 hobbies 值的对应变化。                 

三、下拉列表

    下拉列表:下拉列表中 v-model 写在下拉列表的标签中 <select>标签中。

    根据指定值选择对应<option> 添加选中状态。

    option 没有value属性 以 option 正反标签中的值 作为value。

3.1 下拉列表

js代码段:

window.onload = function (){
 new Vue({
 el:"#app",
 data:{
  s:""
 }
 });
}

html代码段:

<body>
 <div id="app">
 <select v-model="s">
  <option value="s1">小学</option>
  <option value="s2">中学</option>
  <option value="s3">大学</option>
  <option itany="itany" value="">请选择</option>
 </select>
 </div>
</body>

结果分析:

    因为变量 s 的初始值是空字符串,所以默认选择 “请选择选项”(可以根据s的初识值改变默认选项)。当选择其他option时,s 的值会随之改变(字符串:"s1"/"s2"/"s3")。

3.2 未写value值

    当未写 value 时, s 的值会变成 “小学”/“中学”/“大学”。

3.3 多选下拉列表

    multiple关键字,按住 ctrl 键进行多选。注意此时 model 绑定的变量应该是数组。

总结

以上所述是小编给大家介绍的Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
使用prototype.js进行异步操作
Feb 07 Javascript
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
Jul 19 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
Aug 01 Javascript
改善用户体验的五款jQuery插件分享
May 22 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
Sep 20 Javascript
JavaScript 不支持 indexof 该如何解决
Mar 30 Javascript
Node.js DES加密的简单实现
Jul 07 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
Feb 02 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
Nov 11 Javascript
原生js实现随机点餐效果
Dec 10 Javascript
vue实现公告栏文字上下滚动效果的示例代码
Jun 16 Javascript
Angular短信模板校验代码
Sep 23 Javascript
Vue官方文档梳理之全局配置
Nov 22 #Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
Nov 22 #Javascript
vue在使用ECharts时的异步更新和数据加载详解
Nov 22 #Javascript
echarts学习笔记之箱线图的分析与绘制详解
Nov 22 #Javascript
解析Vue2 dist 目录下各个文件的区别
Nov 22 #Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
Nov 22 #Javascript
echarts学习笔记之图表自适应问题详解
Nov 22 #Javascript
You might like
PHP 调试工具Debug Tools
2011/04/30 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
javascript innerText和innerHtml应用
2010/01/28 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
python matplotlib画图实例代码分享
2017/12/27 Python
python可视化实现代码
2019/01/15 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
3种python调用其他脚本的方法
2020/01/06 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
Django静态文件加载失败解决方案
2020/08/26 Python
Python gevent协程切换实现详解
2020/09/14 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
生产部主管岗位职责
2014/01/06 职场文书
技术合作协议书范本
2014/04/18 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers