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 相关文章推荐
arguments对象
Nov 20 Javascript
ActiveX控件与Javascript之间的交互示例
Jun 04 Javascript
分享20个提升网站界面体验的jQuery插件
Dec 15 Javascript
表单验证插件Validation应用的实例讲解
Oct 10 Javascript
JavaScript模仿Pinterest实现图片预加载功能
Oct 25 Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
Dec 30 Javascript
原生实现一个react-redux的代码示例
Jun 08 Javascript
如何为vue的项目添加单元测试
Dec 19 Javascript
Vue.extend实现挂载到实例上的方法
May 01 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
Jan 18 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
Jul 22 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中几种常见的超时处理全面总结
2012/09/11 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
Javascript typeof 用法
2008/12/28 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
python实现简单ftp客户端的方法
2015/06/28 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
python list元素为tuple时的排序方法
2018/04/18 Python
python3 flask实现文件上传功能
2020/03/20 Python
通过python实现弹窗广告拦截过程详解
2019/07/10 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
建筑设计所实习生自我鉴定
2013/09/25 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
个人工作表现自我评价
2015/03/06 职场文书
MySQL5.7并行复制原理及实现
2021/06/03 MySQL
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL