在我啃了一遍书本之后,开始了在慕课看视频的过程,从最开始的HTML+CSS的基础课程看起,在第5-9小节讲到了form表单的label标签,

首先看一下慕课的讲解:

 label 标签不会向用户呈现任何特殊效果,它的作用是为鼠标用户改进了可用性。如果你在 label 标签内点击文本,就会触发此控件。就是说,当用户单击选中该label标签时,浏览器就会自动将焦点转到和标签相关的表单控件上(就自动选中和该 label标签相关连的表单控件上)。然后她提到了一个特别注意:

注意:标签的 for 属性中的值应当与相关控件的 id 属性值一定要相同。

再来看一下W3CSchool对于label标签的定义和用法:

   <label> 标签为 input 元素定义标注(标记)。

         label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在 label 元素内点击文本,就会触发此控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。

         <label> 标签的 for 属性应当与相关元素的 id 属性相同。

同样的,W3CSchool对于label标签的用法中也提到了<label> 标签的 for 属性应当与相关元素的 id 属性相同。那么这一要求到底是起到什么作用的呢,在慕课的讲解中并没有一个直观的解释,但是在W3CScho中给了一个解释:"for" 属性可把 label 绑定到另外一个元素。请把 "for" 属性的值设置为相关元素的 id 属性的值。

在这里引起我注意的就是绑定这个词。以慕课上的的代码为例子


  1. 你对什么运动感兴趣:<br />
  2. <label for="jog">慢跑</label>
  3. <input type="checkbox" name="jog" id="jog" /><br />
  4. <label for="climb">登山</label>
  5. <input type="checkbox" name="climb" id="climb" /><br />
  6. <label for="basketball">篮球</label>
  7. <input type="checkbox" name="basketball" id="basketball" />

这组代码实际的作用是,在我的鼠标单击慢跑时,浏览器会自动的帮我把焦点相应的转到与慢跑的label标签for属性的值相同的id属性所在的input标签,实际的显示效果就是如下图,在单击慢跑时,它右侧的复选框被选中。

在当时,我主观形象的认为,绑定就是将这一行构成一个整体,点击这一行的哪个部分都视作在点击复选框。然而后来我认识到绑定不应该是这种显式的构造整体,所以我又写了下面这段代码:


  1. 你对什么运动感兴趣:<br />
  2. <label for="jog">慢跑</label>
  3. <input type="checkbox" name="jog" id="climb" /><br />
  4. <label for="climb">登山</label>
  5. <input type="checkbox" name="climb" id="jog" /><br />
  6. <label for="basketball">篮球</label>
  7. <input type="checkbox" name="basketball" id="basketball" />

这组代码实际的作用是相同的,在我的鼠标单击慢跑时,浏览器会自动的帮我把焦点相应的转到与慢跑的label标签for属性的值相同的id属性所在的input标签,实际的显示效果就是如下图,在单击慢跑时,它下方右侧的复选框被选中。这是因为,此时与慢跑的label标签for属性的值"jog"相同的id属性值"jog"所在的input标签是位于第二行的。

通过这两组代码的对比,应该可以比较明显的看出绑定这个事件的具体表现。

虽然label这个标签的使用是非常简单的,但也希望有人能够通过我的这篇博文,充分认识到for属性的值与id属性值相同的必要,避免由于这点小的失误造成代码的错误。

作为作为刚刚走在前端这条路上的新手,虽然可能很多人都知道了label标签的正确用法,我还是决定下下来,作为自己学习路上的见证。

在学习HTML——form表单中的label标签时的一点小体会的更多相关文章

  1. form表单中的label标签

    小伙伴们,你们在前面学习表单各种控件的时候,有没有发现一个标签--label,这一小节就来揭晓它的作用. label标签不会向用户呈现任何特殊效果,它的作用是为鼠标用户改进了可用性.如果你在 labe ...

  2. HTML--form表单中的label标签

    小伙伴们,你们在前面学习表单各种控件的时候,有没有发现一个标签--label,这一小节就来揭晓它的作用. label标签不会向用户呈现任何特殊效果,它的作用是为鼠标用户改进了可用性.如果你在 labe ...

  3. form表单中只有一个input时,按回车键后表单自动提交(form表单的一个小坑)

    form中只有一个input按回车键表单会自动提交 在一个form表单中,若只有一个input,按回车键表单会自动提交,但是当表单中存在多个input时,按回车键不会执行任何操作,这是form表单的一 ...

  4. Unieap3.5-禁用Form表单中的全部标签

    var form=unieap.byId('customerForm'); var children=form.getDescendants(); dojo.forEach(children,func ...

  5. form表单中使用a标签代替button或commit进行数据提交

    1.申明form的id:xxx 2.在<a>标签内书添加属性 onclick="document:xxx.submit()" ​

  6. 今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式

    今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式 jquery中的serialize() 方法 该方法通过序列化表单值,创建 URL 编码文本字符串 序列化的值可在 ...

  7. jsp中的form表单中的 id和name有什么区别了

    <form action="./system/WebServer_webServerLogin" method="post" id="login ...

  8. django重写form表单中的局部钩子函数

    from django import forms from django.core.exceptions import ValidationError from jax import models c ...

  9. form表单中的id 与name的区别

    以前经常写form表单时,不写id和name,总觉得没有什么用.后来一看后台套完的页面发现,他们都补上name,不知道所以然,就查了一下资料,吓我一跳,要是照我那样写根本不会有数据传到服务器.原来表单 ...

随机推荐

  1. python匹配某个中文字符

    python2.7对中文的支持不好是众所周知的,现在遇到这样一个需求,要匹配某个中文字符.查了一个资料,思路就是转化为unicode进行比较,记录如下: line = '参考答案: A' # gbk ...

  2. Kali设置代理

    原文:Kali-linux设置ProxyChains ProxyChains是Linux和其他Unices下的代理工具.它可以使任何程序通过代理上网,允许TCP和DNS通过代理隧道,支持HTTP.SO ...

  3. Caffe提取任意层特征并进行可视化

    现在Caffe的Matlab接口 (matcaffe3) 和python接口都非常强大, 可以直接提取任意层的feature map以及parameters, 所以本文仅仅作为参考, 更多最新的信息请 ...

  4. JS设计模式——3.封装与信息隐藏

    封装.信息隐藏与接口的关系 信息隐藏是目的,封装是手段. 接口提供了一份记载着可供公共访问的方法的契约.它定义了两个对象间可以具有的关系.只要接口不变,这个关系的双方都是可以替换的. 一个理想的软件系 ...

  5. jsoup抓取网页报错UnsupportedMimeTypeException

    今天在用Jsoup爬虫的时候两次遇到下面错误 Exception in thread "main" org.jsoup.UnsupportedMimeTypeException: ...

  6. [HTML]增加input标签的multiple属性上传的文件数

    .发现问题 <input type="file" name="myfile[]" multiple="multiple"/> 最 ...

  7. Homestead在windows7 下的搭建

    遇到的问题有 1.Homestead 的版本问题,教程git版本是 v5,最新是v7的,如果用最新,就要求vagrant的版本是 2.0的: 2.启动homestead后,出现 No input fi ...

  8. xshell 映射带跳板机服务器的端口到本地

    1.配置xshell连接跳板机服务器: 2. 3.可用navicate等同过端口连接远程数据库.

  9. Eloqument 学习

    参考地址:https://d.laravel-china.org/docs/5.5/eloquent#mass-assignment

  10. java版云笔记(九)之动态sql

    SQL 首先,所谓SQL的动态和静态,是指SQL语句在何时被编译和执行,二者都是用在SQL嵌入式编程中的,这里所说的嵌入式是指将SQL语句嵌入在高级语言中,而不是针对于单片机的那种嵌入式编程. 静态S ...