1.显示关联
通过 label标签的for属性 和 表单控件的id属性 显示关联;
举例说明
<label for="name">名称:label>
<input type="text" id='name' placeholder="请输入产品名称">
当点击文本“名称:”时,会自动聚焦在input输入框中;
2.隐士关联
隐士关联是直接使用label标签包裹表单控件;
举例说明
性别:
<label ><input type='radio'/> 男label>
<label ><input type='radio'/> 女label>
此时点击 男/女 就会选中其前面的单选框;
性别:
<label for="name"><input type='radio'/> 男label>
<label for="name"><input type='radio'/> 女label>
此时只有点击 单选框才能选中,点击文本不起作用
<div class="convert-box" @click='test'>
<label for="name">名称:label>
<input type="text" id='name' placeholder="请输入产品名称">
div>
test(){
console.log('执行了')
}
最近发现一个比较有意思的现象
如上代码:label标签与表单控件相关联,父组件绑定点击事件;
现象
原因
解决1
阻止元素的默认事件;
<div class="convert-box" @click.prevent='test($event)'>
<label for="name">名称:label>
<input type="text" id='name' placeholder="请输入产品名称">
div>
通过prevent修饰符阻止了label标签的默认事件·;
解决2
通过target来辨认;
<div class="convert-box" @click='test'>
<label for="name">名称:label>
<input type="text" id='name' placeholder="请输入产品名称">
div>
test(e){
if(e.target.tagName == 'DIV'){
// 仅在点击div时执行,点击input与label时不执行
console.log('执行了', e.target)
}
}