label

输入框。

用来改进表单组件的可用性,使用 for 属性找到对应的 id,或者将控件放在该标签下,当点击时,就会触发对应的控件。

for 优先级高于内部控件,内部有多个控件的时候默认触发第一个控件。

目前可以绑定的控件有:<button/> , <checkbox/> , <radio/> , <switch/>

属性名类型说明
forString绑定控件的 id

示例代码

  1. <!--label.jxml-->
  2. <view class="page-control-floor">
  3. <view class="page-control-sub-title">checkbox包含在label内</view>
  4. <checkbox-group class="group" bindchange="checkboxChange">
  5. <view class="label-1" jd:for="{{checkboxItems}}" jd:key="index">
  6. <label>
  7. <checkbox value="{{item.name}}" checked="{{item.checked}}"></checkbox>
  8. <text class="label-1-text">{{item.value}}</text>
  9. </label>
  10. </view>
  11. </checkbox-group>
  12. </view>
  13. <view class="page-control-floor">
  14. <view class="page-control-sub-title">label用for直接绑定radio标签</view>
  15. <radio-group class="group" bindchange="radioChange">
  16. <view class="label-2" jd:for="{{radioItems}}" jd:key="index">
  17. <radio id="{{item.name}}" value="{{item.name}}" checked="{{item.checked}}"></radio>
  18. <label class="label-2-text" for="{{item.name}}">
  19. <text>{{item.name}}</text>
  20. </label>
  21. </view>
  22. </radio-group>
  23. </view>
  24. <view class="page-control-floor">
  25. <view class="page-control-sub-title">label绑定两个CHECKBOX、和TEXT</view>
  26. <label class="label-3">
  27. <checkbox class="checkbox-3">checkbox1</checkbox>
  28. <checkbox class="checkbox-3">checkbox2</checkbox>
  29. <text class="label-3-text">我是text,点我触发checkbox按钮</text>
  30. </label>
  31. </view>
  1. //label.js
  2. Page({
  3. data: {
  4. checkboxItems: [{ name: 'CHN', value: '中国' }, { name: 'JPA', value: '日本', checked: 'true' }],
  5. radioItems: [{ name: 'CHN', value: '中国' }, { name: 'JPA', value: '日本', checked: 'true' }],
  6. },
  7. checkboxChange(e) {
  8. var checked = e.detail.value;
  9. var changed = {};
  10. for (var i = 0; i < this.data.checkboxItems.length; i++) {
  11. if (checked.indexOf(this.data.checkboxItems[i].name) !== -1) {
  12. changed['checkboxItems[' + i + '].checked'] = true;
  13. } else {
  14. changed['checkboxItems[' + i + '].checked'] = false;
  15. }
  16. }
  17. this.setData(changed);
  18. console.log(e);
  19. },
  20. radioChange(e) {
  21. var checked = e.detail.value;
  22. var changed = {};
  23. for (var i = 0; i < this.data.radioItems.length; i++) {
  24. if (checked.indexOf(this.data.radioItems[i].name) !== -1) {
  25. changed['radioItems[' + i + '].checked'] = true;
  26. } else {
  27. changed['radioItems[' + i + '].checked'] = false;
  28. }
  29. }
  30. this.setData(changed);
  31. console.log(e);
  32. }
  33. })

label - 图1