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

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

1、单选按钮

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

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

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

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

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

    js部分代码:spa

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

    html部分代码:code

<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>

2、复选按钮

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

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

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

一、基本类型

    初始化时,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>

效果截图:

                    

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

    此后,每次点击多选按钮,hobbies0一、hobbies0二、hobbies03的值都是 true | false 变化

二、数组

    初始化时,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>

效果截图:

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

                    

3、下拉列表

    下拉列表:下拉列表中 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 绑定的变量应该是数组。

 

至此,完毕。感谢您的阅读。

不积跬步,无以致千里;不积细流,无以成江海。

相关文章
相关标签/搜索