Skip to content

label ​

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

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

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

属性说明

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

示例 查看演示

以下示例代码,来自于hello uni-app项目,推荐使用HBuilderX,新建uni-app项目,选择hello uni-app模板,可直接体验完整示例。

vue
<template>
  <view>
    <view class="uni-common-mt">
      <view class="uni-form-item uni-column">
        <view class="title">表单组件在label内</view>
        <checkbox-group class="uni-list" @change="checkboxChange">
          <label
            class="uni-list-cell uni-list-cell-pd"
            v-for="item in checkboxItems"
            :key="item.name"
          >
            <view>
              <checkbox :value="item.name" :checked="item.checked" />
            </view>
            <view>{{item.value}}</view>
          </label>
        </checkbox-group>
      </view>

      <view class="uni-form-item uni-column">
        <view class="title">label用for标识表单组件</view>
        <radio-group class="uni-list" @change="radioChange">
          <label
            class="uni-list-cell uni-list-cell-pd"
            v-for="(item,index) in radioItems" :key="index"
          >
            <view>
              <radio
                :id="item.name"
                :value="item.name"
                :checked="item.checked"
              />
            </view>
            <view>
              <label class="label-2-text" :for="item.name">
                <text>{{item.value}}</text>
              </label>
            </view>
          </label>
        </radio-group>
      </view>

      <view class="uni-form-item uni-column">
        <view class="title">label内有多个时选中第一个</view>
        <checkbox-group class="uni-list" @change="checkboxChange">
          <label class="label-3">
            <view class="uni-list-cell uni-list-cell-pd">
              <checkbox class="checkbox-3">选项一</checkbox>
            </view>
            <view class="uni-list-cell uni-list-cell-pd">
              <checkbox class="checkbox-3">选项二</checkbox>
            </view>
            <view
              class="uni-link uni-center"
              style="margin-top:20rpx;"
            >点击该label下的文字默认选中第一个checkbox</view>
          </label>
        </checkbox-group>
      </view>
    </view>
  </view>
</template>
<template>
  <view>
    <view class="uni-common-mt">
      <view class="uni-form-item uni-column">
        <view class="title">表单组件在label内</view>
        <checkbox-group class="uni-list" @change="checkboxChange">
          <label
            class="uni-list-cell uni-list-cell-pd"
            v-for="item in checkboxItems"
            :key="item.name"
          >
            <view>
              <checkbox :value="item.name" :checked="item.checked" />
            </view>
            <view>{{item.value}}</view>
          </label>
        </checkbox-group>
      </view>

      <view class="uni-form-item uni-column">
        <view class="title">label用for标识表单组件</view>
        <radio-group class="uni-list" @change="radioChange">
          <label
            class="uni-list-cell uni-list-cell-pd"
            v-for="(item,index) in radioItems" :key="index"
          >
            <view>
              <radio
                :id="item.name"
                :value="item.name"
                :checked="item.checked"
              />
            </view>
            <view>
              <label class="label-2-text" :for="item.name">
                <text>{{item.value}}</text>
              </label>
            </view>
          </label>
        </radio-group>
      </view>

      <view class="uni-form-item uni-column">
        <view class="title">label内有多个时选中第一个</view>
        <checkbox-group class="uni-list" @change="checkboxChange">
          <label class="label-3">
            <view class="uni-list-cell uni-list-cell-pd">
              <checkbox class="checkbox-3">选项一</checkbox>
            </view>
            <view class="uni-list-cell uni-list-cell-pd">
              <checkbox class="checkbox-3">选项二</checkbox>
            </view>
            <view
              class="uni-link uni-center"
              style="margin-top:20rpx;"
            >点击该label下的文字默认选中第一个checkbox</view>
          </label>
        </checkbox-group>
      </view>
    </view>
  </view>
</template>
js
<script>
export default {
  data() {
    return {
      checkboxItems: [
        {
          name: 'USA',
          value: '美国',
        },
        {
          name: 'CHN',
          value: '中国',
          checked: 'true',
        },
      ],
      radioItems: [
        {
          name: 'USA',
          value: '美国',
        },
        {
          name: 'CHN',
          value: '中国',
          checked: 'true',
        },
      ],
      hidden: false,
    },
  },
  methods: {
    checkboxChange: function(e) {
      console.log(e);
      var checked = e.target.value;
      var changed = {};
      for (var i = 0; i < this.checkboxItems.length; i++) {
        if (checked.indexOf(this.checkboxItems[i].name) !== -1) {
          changed['checkboxItems[' + i + '].checked'] = true;
        } else {
          changed['checkboxItems[' + i + '].checked'] = false;
        }
      }
    },
    radioChange: function(e) {
      var checked = e.target.value;
      var changed = {};
      for (var i = 0; i < this.radioItems.length; i++) {
        if (checked.indexOf(this.radioItems[i].name) !== -1) {
          changed['radioItems[' + i + '].checked'] = true;
        } else {
          changed['radioItems[' + i + '].checked'] = false;
        }
      }
    },
  },
};
</script>
<script>
export default {
  data() {
    return {
      checkboxItems: [
        {
          name: 'USA',
          value: '美国',
        },
        {
          name: 'CHN',
          value: '中国',
          checked: 'true',
        },
      ],
      radioItems: [
        {
          name: 'USA',
          value: '美国',
        },
        {
          name: 'CHN',
          value: '中国',
          checked: 'true',
        },
      ],
      hidden: false,
    },
  },
  methods: {
    checkboxChange: function(e) {
      console.log(e);
      var checked = e.target.value;
      var changed = {};
      for (var i = 0; i < this.checkboxItems.length; i++) {
        if (checked.indexOf(this.checkboxItems[i].name) !== -1) {
          changed['checkboxItems[' + i + '].checked'] = true;
        } else {
          changed['checkboxItems[' + i + '].checked'] = false;
        }
      }
    },
    radioChange: function(e) {
      var checked = e.target.value;
      var changed = {};
      for (var i = 0; i < this.radioItems.length; i++) {
        if (checked.indexOf(this.radioItems[i].name) !== -1) {
          changed['radioItems[' + i + '].checked'] = true;
        } else {
          changed['radioItems[' + i + '].checked'] = false;
        }
      }
    },
  },
};
</script>