W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
解釋:表單,將 form 組件內(nèi)的用戶輸入的<switch/>
<input/>
<
checkbox/>
<slider/>
<radio/>
<picker/>
提交。當(dāng)點(diǎn)擊<form/>
表單中
form-type 為 submit 的<button/>
組件時(shí),會將表單組件中的 value 值進(jìn)行提交,需要在表單組件中加上 name 來作為 key 。
Web 態(tài)說明:由于瀏覽器的限制,在 Web 態(tài)下部分系統(tǒng)信息無法獲取,故暫不支持表單類、訂閱類模板消息。
屬性名 | 類型 | 默認(rèn)值 | 必填 | 說明 | 最低版本 | ||
---|---|---|---|---|---|---|---|
report-submit | Boolean | false | 否 | 是否返回 formId 用于發(fā)送 模板消息 (工具上 formId 為'' ,請?jiān)谡鏅C(jī)上測試)。 |
1.12
低版本請做兼容性處理 |
||
report-type | String | ‘default’ | 否 | 模板消息的類型,report-submit 為 true 時(shí)填寫有效。
取值:default 或 subscribe。 |
3.105.3
低版本請做兼容性處理 |
||
template-id | String/Array.<string> | 否 | report-type 為 subscribe 時(shí)必填,發(fā)送訂閱類模板消息所用的模板庫標(biāo)題 ID,可通過 getTemplateLibraryList 獲取。
當(dāng)參數(shù)類型為 Array 時(shí),可傳遞 1~3 個(gè)模板庫標(biāo)題 ID。 |
3.105.3(String 類型)
3.170.1(Array 類型) 低版本請做兼容性處理 |
|||
subscribe-id | String | 否 | report-type 為 subscribe 時(shí)必填,發(fā)送訂閱類模板消息時(shí)所使用的唯一標(biāo)識符,內(nèi)容由開發(fā)者自定義,用來標(biāo)識訂閱場景。
注意:同一用戶在同一 subscribe-id 下的多次授權(quán)不累積下發(fā)權(quán)限,只能下發(fā)一條。若要訂閱多條,需要不同 subscribe-id 。 |
3.105.3
低版本請做兼容性處理 |
|||
bindsubmit | EventHandle | 否 | 攜帶 form 中的數(shù)據(jù)觸發(fā) submit 事件,event.detail = {value : {'name': 'value'}, formId: '', message: '', status: ''} , 當(dāng) report-type 為 subscribe 時(shí),status 和 message 中返回用戶授權(quán)具體信息。 |
- | |||
bindreset | EventHandle | 否 | 表單重置時(shí)會觸發(fā) reset 事件。 |
值 | 說明 | web 態(tài)說明 | ||||
---|---|---|---|---|---|---|
default | 表單類模板消息 | web 態(tài)不支持表單類模板消息, bindsubmit 回調(diào)參數(shù)中的 message 始終為"請求 formId 失敗", status 始終為 500105 。 | ||||
subscribe | 訂閱類模板消息,需要用戶授權(quán)才可發(fā)送 | web 態(tài)不支持訂閱類模板消息,不會彈窗提示授權(quán)。bindsubmit 回調(diào)參數(shù)中的 message 始終為"請求 formId 失敗", status 始終為 500105 。 |
<form report-submit="true" report-type="subscribe" template-id="BD0001" subscribe-id="1234" bindsubmit="formSubmit">
<button formType="submit" type="primary">template-id 為 String</button>
</form>
Page({
formSubmit(e) {
// 此時(shí) formId 為 'BD0001-formId'(非真實(shí)數(shù)據(jù))
swan.showModal({
title: 'template-id 為 string',
content: e.detail.formId
});
}
});
<form report-submit="true" report-type="subscribe" template-id="{{templateId}}" subscribe-id="1235" bindsubmit="formSubmit">
<button formType="submit" type="primary">template-id 為 Array</button>
</form>
Page({
data: {
templateId: ['BD0001', 'BD0002']
},
formSubmit(e) {
// 此時(shí) formId 為 {'BD0001': 'BD0001-formId', 'BD0002': 'BD0002-formId'}(非真實(shí)數(shù)據(jù))
swan.showModal({
title: 'template-id 為 Array',
content: JSON.stringify(e.detail.formId)
});
}
});
如果 Array 中的 template-id 超過三個(gè),返回的 formId 為空字符串,舉例如下
<form report-submit="true" report-type="subscribe" template-id="{{templateId}}" subscribe-id="1236" bindsubmit="formSubmit">
<button formType="submit" type="primary">template-id 超過三個(gè)</button>
</form>
Page({
data: {
templateId: ['BD0001', 'BD0002', 'BD0003', 'BD0004']
},
formSubmit(e) {
// 此時(shí) formId 為 ''
swan.showModal({
title: 'template-id 超過三個(gè)',
content: e.detail.formId
});
}
});
如果 Array 中有重復(fù)的 template-id ,重復(fù)的 template-id 對應(yīng)的 formId 只返回一次,舉例如下:
<form report-submit="true" report-type="subscribe" template-id="{{templateId}}" subscribe-id="1237" bindsubmit="formSubmit">
<button formType="submit" type="primary">有重復(fù)的 template-id</button>
</form>
Page({
data: {
templateId: ['BD0001', 'BD0001', 'BD0002']
},
formSubmit(e) {
// 此時(shí) formId 為 {'BD0001': 'BD0001-formId', 'BD0002': 'BD0002-formId'}(非真實(shí)數(shù)據(jù))
swan.showModal({
title: '有重復(fù)的 template-id',
content: JSON.stringify(e.detail.formId)
});
}
});
注意:在提交 form 表單時(shí),將會彈出模板消息授權(quán)彈窗,用戶授權(quán)后才能在 event.detail 中獲取被授權(quán)模板消息的 formId 。
status 為 Number 類型,message 為 String 類型,當(dāng)用戶永久拒絕授權(quán)的時(shí)候,建議開發(fā)者不要再展示訂閱消息授權(quán)面板入口。
status | message |
---|---|
500101 | 用戶永久拒絕授權(quán) |
500102 | 用戶單次拒絕授權(quán) |
500103 | 用戶取消授權(quán) |
500104 | 請求模板內(nèi)容失敗 |
500105 | 請求 formId 失敗 |
代碼示例:普通表單
<view class="wrap">
<form bindsubmit="formSubmit"
bindreset="formReset">
<view class="card-area">
<view class="top-description border-bottom">開關(guān)選擇器</view>
<view class="item-scroll">
<text class="switch-text">開關(guān)</text>
<switch></switch>
</view>
</view>
<view class="card-area">
<view class="top-description border-bottom">單項(xiàng)選擇器</view>
<radio-group name="radio-group">
<radio class="block border-bottom" value="radio1">單選項(xiàng)一</radio>
<radio class="block" value="radio2">單選項(xiàng)二</radio>
</radio-group>
</view>
<view class="card-area">
<view class="top-description border-bottom">多項(xiàng)選擇器</view>
<checkbox-group name="checkbox">
<label class="block border-bottom">
<checkbox value="checkbox1">多選項(xiàng)一</checkbox>
</label>
<label class="block border-bottom">
<checkbox value="checkbox2">多選項(xiàng)二</checkbox>
</label>
<label class="block">
<checkbox value="checkbox2">多選項(xiàng)三</checkbox>
</label>
</checkbox-group>
</view>
<view class="card-area">
<view class="top-description border-bottom">滑塊選擇器</view>
<slider class="slider" activeColor="#3388FF" block-size="20" name="slider"></slider>
</view>
<view class="card-area">
<view class="top-description border-bottom">輸入框</view>
<input name="input" class="ipt" placeholder="請?jiān)诖溯斎? />
</view>
<view class="card-area">
<view class="top-description border-bottom">提交表單</view>
<button formType="submit" type="primary">提交</button>
<button formType="reset">清空</button>
</view>
</form>
</view>
Page({
formSubmit(e) {
console.log('form發(fā)生了submit事件,攜帶數(shù)據(jù)為:', e.detail.value);
swan.showModal({
content: '數(shù)據(jù):' + JSON.stringify(e.detail.value),
confirmText: '確定'
});
},
formReset(e) {
console.log('form表單發(fā)生了', e.type);
}
});
參考示例 1:模板類型表單
<view class="wrap">
<form
report-submit="{{true}}"
report-type="subscribe"
template-id="BD0003"
subscribe-id="8026"
bindsubmit="formSubmit"
bindreset="formReset">
<button formType="submit" type="primary">report-type為subscribe</button>
</form>
</view>
<view class="wrap">
<form
report-submit="{{true}}"
report-type="default"
bindsubmit="formSubmit"
bindreset="formReset">
<button formType="submit" type="primary">report-type為default</button>
</form>
</view>
Page({
onLoad() {
// 此組件需要在登錄態(tài)下使用
swan.login()
},
formSubmit(e) {
swan.showModal({
title: '表單數(shù)據(jù)',
content: JSON.stringify(e.detail.message) + '/' +JSON.stringify(e.detail.status),
confirmText: '確定',
showCancel: false
});
}
});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: