微信小程式——表單
阿新 • • 發佈:2018-11-26
微信小程式的表單和web的表單很相似,如程式碼所示:
<from bindsubmit="formSubmit" bindreset="formReset"> <text>聯絡人</text> <input vlaue="白木喬" ></input> <radio-group> <radio wx:for="{{items}}"></radio> </radio-group> <text>手機號</text> <input password='true'></input> <text>評價</text> <textarea placeholder="請給我們的服務提出寶貴的意見" name="textarea"/> <button form-type="submit"> 提交 </button> </from>
這是一個非常簡單並且常用的一個表單形式,由<from/>表單,<input/>輸入框,<radio/>單選框,<textarea/>多行輸入框,<button/>按鈕 ,除此之外,表單中還通常會用到<checkbox/>複選框,<picker/>從底部彈起的滾動選擇器,<pick-view/>嵌入頁面的滾動選擇器,<slider/>滑動選擇器,<switch/>開關選擇器 等一些元件。這些都是很容易上手的元件,重點是通過wxss樣式能讓他們更加好看。
除了上面介紹的一些關於表單的元件,還有一個元件是<label/>,下面重點介紹一下:
<label/>是用來改進表單元件的可用性,使用for
屬性找到對應的id
,或者將控制元件放在該標籤下,當點選時,就會觸發對應的控制元件。
for
優先順序高於內部控制元件,內部有多個控制元件的時候預設觸發第一個控制元件。
目前可以繫結的控制元件有:<button/>
, <checkbox/>
, <radio/>
, <switch/>
。
給個例子很容易理解
<view class="section section_gap"> <view class="section__title">複選框</view> <checkbox-group class="group" bindchange="checkboxChange"> <view class="label-1" wx:for="{{checkboxItems}}"> <label> <checkbox hidden value="{{item.name}}" checked="{{item.checked}}"></checkbox> <view class="label-1__icon"> <view class="label-1__icon-checked" style="opacity:{{item.checked ? 1: 0}}"></view> </view> <text class="label-1__text">{{item.value}}</text> </label> </view> </checkbox-group> </view> <view class="section section_gap"> <view class="section__title">單選框</view> <radio-group class="group" bindchange="radioChange"> <view class="label-2" wx:for="{{radioItems}}"> <radio id="{{item.name}}" hidden value="{{item.name}}" checked="{{item.checked}}"></radio> <view class="label-2__icon"> <view class="label-2__icon-checked" style="opacity:{{item.checked ? 1: 0}}"></view> </view> <label class="label-2__text" for="{{item.name}}"><text>{{item.name}}</text></label> </view> </radio-group> </view>
.js
Page({
data: {
checkboxItems: [
{name: 'USA', value: '美國'},
{name: 'CHN', value: '中國', checked: 'true'},
{name: 'BRA', value: '巴西'},
{name: 'JPN', value: '日本', checked: 'true'},
{name: 'ENG', value: '英國'},
{name: 'TUR', value: '法國'},
],
radioItems: [
{name: 'USA', value: '美國'},
{name: 'CHN', value: '中國', checked: 'true'},
{name: 'BRA', value: '巴西'},
{name: 'JPN', value: '日本'},
{name: 'ENG', value: '英國'},
{name: 'TUR', value: '法國'},
],
hidden: false
},
checkboxChange: function(e) {
var checked = e.detail.value
var changed = {}
for (var i = 0; i < this.data.checkboxItems.length; i ++) {
if (checked.indexOf(this.data.checkboxItems[i].name) !== -1) {
changed['checkboxItems['+i+'].checked'] = true
} else {
changed['checkboxItems['+i+'].checked'] = false
}
}
this.setData(changed)
},
radioChange: function(e) {
var checked = e.detail.value
var changed = {}
for (var i = 0; i < this.data.radioItems.length; i ++) {
if (checked.indexOf(this.data.radioItems[i].name) !== -1) {
changed['radioItems['+i+'].checked'] = true
} else {
changed['radioItems['+i+'].checked'] = false
}
}
this.setData(changed)
}
})