单选按钮在网页中很常见。例如《HTML <input>标签》中的性别字段,用户只能选择男或女中的一种,此时选用单选按钮再合适不过了。
在 HTML 中,把 <input> 标签的 type 属性设置为 radio 可以表示单选按钮。具体语法格式如下:
同单行文本框和密码框一样,单选按钮要想被正确提交,也必须设置 name 属性。除了 name 属性之外,单选按钮还有几个其它属性,我们来看一下。
其它属性 | 说明 |
---|---|
checked | 用来规定在页面加载时应该被预先选定的 input 元素。 |
value | 用来定义被选中时发送到服务器的值。同一组中每个按钮的值应该不同,这样服务器才能辨别提交的是哪一项。 |
id | 规定 HTML 元素的唯一 id。id 值在整个页面是唯一的,不会重复。 |
checked 属性用来设置页面加载时单选按钮的选中状态。当属性值为“checked”时,单选按钮会被选中。下面我们通过一个简单的示例来进行演示:
<form action="http://bbs.cdsy.xyz/member.php?mod=logging&action=login" method="post" name="formName">
性别:<input type="radio" name="girl" checked="checked">女
<input type="radio" name="boy" checked="checked">男
</form>
运行结果如图所示:
注意:当 type 属性值为 radio 时,name 属性值必须保持一致。本例只是为了演示问题才会为所有按钮加checked="checked"属性,在实际开发中不会这样写。checked="checked"可以简写为 checked。
上述代码因为 name 属性值不同,两个单选按钮被同时选中。接下来我们就来看一下当 name 属性值相同时,给两个按钮都设置选中,会产生什么效果:
<form action="http://bbs.cdsy.xyz/member.php?mod=logging&action=login" method="post" name="formName">
性别:<input type="radio" name="sex" checked>女
<input type="radio" name="sex" checked>男
</form>
运行结果如图所示:
<form action="http://bbs.cdsy.xyz/member.php?mod=logging&action=login" method="post" name="formName">
性别:<input type="radio" name="sex" value="girl">女
<input type="radio" name="sex" value="boy" checked="checked">男
</form>
运行效果如图所示:
在为单选按钮设置 id 属性时,一般有 3 种用途:
本节中,我们将讲述第一种。那么我们就来看一下 id 属性是如何与 <label> 标签配合使用的:
<form action="http://bbs.cdsy.xyz/member.php?mod=logging&action=login" method="post" name="formName">
性别:<input type="radio" name="girl" value="girl" id="girl"><label for="girl">女</label>
<input type="radio" name="girl" value="boy" id="boy" checked="checked"><label for="boy">男</label>
</form>
通过以上代码可以发现,<label> 标签中的 for 属性与 <input> 元素的 id 属性值相同,我们可以说它们之间进行了一个绑定。那么 <label> 标签到底是用来做什么的呢?
<label> 标签主要用来为 <input> 元素定义标记,又因为 <label> 标签中的 for 属性可以与 <input> 元素的 id 属性进行绑定,所以当点击 <label> 标签中的内容(<label for="girl">女</label>)时,也相当于对 <input> 中的元素(<input type="radio" name="girl" value="girl" id="girl">)进行了点击。运
行结果如下图所示:
我们建议每个单选按钮都和 <label> 标签配合使用,一是为了用户体验,二是为了在后期使用 JavaScript 语言操作数据时更方便。