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> <p 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> </p> </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> <p 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/> </p> </body>
效果截圖:
# 初始化時,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> <p 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> </p> </body>
效果截圖:
# 初始化時hobbies 是空數組。注意滑鼠點擊順序和 hobbies 值的對應變化。
三、下拉清單
下拉清單:下拉清單中v-model 寫在下拉清單的標籤中