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 寫在下拉清單的標籤中0704279e3714841f00476c524d92707b 新增選取狀態。
option 沒有value屬性 以 option 正反標籤中的值 作為value。
3.1 下拉清單
js程式碼片段:
window.onload = function (){ new Vue({ el:"#app", data:{ s:"" } }); }
html程式碼片段:
<body> <p id="app"> <select v-model="s"> <option value="s1">小学</option> <option value="s2">中学</option> <option value="s3">大学</option> <option itany="itany" value="">请选择</option> </select> </p> </body>
#結果分析:
因為變數s 的初始值是空字串,所以預設選擇「請選擇選項」(可根據s的初識值改變預設選項)。當選擇其他option時,s 的值會隨之改變(字串:"s1"/"s2"/"s3")。
3.2 未寫value值
當未寫 value 時, s 的值會變成 「小學」/「中學」/「大學」。
3.3 多重選取下拉清單
multiple關鍵字,按住 ctrl 鍵進行多重選取。注意此時 model 綁定的變數應該是數組。
相關推薦:
以上是關於Vue.js表單標籤中的單選按鈕、複選按鈕和下拉清單的取值詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!