Radio 和 check boxes是form表单中的一部分,允许用户通过鼠标简单点击就可以选择。当与<textarea>元素的一般JavaScript操纵相比较,这些表单控件(form controls)的JavaScript操纵可以说是大不相同。

一个radio(单选框)与一个复选框(checkbox)的区别

在我们正式开始之前,非常重要的一点就是确定每一个人都清楚知道radio和check box的区别,在一组(a group)radio中你只能选择一个radio,然而,对于check boxes来说,多个选中是被允许。例如:在性别选择中,用radio就是最恰当的,而不是使用check box。

怎么通过JavaScript来访问一个radio/check box呢?

究竟,JavaScript是怎么样做才能访一个radio 和 checkbox呢?其实,你可以通过他们的名字来使用任何别的表单(form)元素。

无论是一个radio,还是一个checkbox,对于JavaScript来说都是没有分别的,下面代码定义了一个名为"test"的单选框,并且使用JavaScript来访问它。

<form name="example">
<input type="radio" name="test" /> </form>
<script type="text/javascript">
// access the button called "test"
document.example.test;
</script>

如何使用JavaScript改变一个radio/checkbox 的选择状态?

如果我们无法改变选择框的状态,那么通过它自身来访问一个选择框(radio or checkbox)是没有什么用处的。

一个选择框的状态有两种——"on"被选中时,与"off",没有被选中时,这个状态被JavaScript中的一个名为"checked"的布尔属性所表示。

使用该属性,我们不仅可以确定一个选择框的是否选中状态,还可以同赋值"true"或"false"来改变它的选中状态。(注意:这里的选中状态只是包括选中和没有选中)

//alerts whether a box is checked
alert(document.example.test.checked); //Dynamically selects a box
document.example.test.checked = true;

http://www.javascriptkit.com/javatutors/radiocheck.shtml

多个选择框的组合

我们很少会看到只有一个radio 或 checkbox在表单form中,它们本来就是被用来组合使用的。

如今,我们知道访问一个选择框的默认方式就是通过它的名字(name属性值)。话虽如此(having said that),想象一下有一个50个radio button的组合。

访问他们就需要我们为了每一个(each and every)按钮定义一个唯一的名字。此外,在一个我们需要使用循环来遍历所有的radio buttons的情况下,这意味着需要手写50行的代码来访问和获取50个按钮中的每一个。这个是一个难以接受的想法。

因此,你自言自语的说,就像你常常注视这天空时说"天空之外肯定有一些更好的事物"。好的,我讨厌打破你的这个想法,但是在实际生活中那确实是不存在的,事实就是如此。

可是,在JavaScript中确实有一种技巧可以允许我们方便快捷访问一组当中的某一个radio/check box,关键就是给每一个选择框同一个名字。通过这样子的做法,JavaScript会使用同一个名字来创建一个这些选择框的数组,并且可以允许我们想访问数组元素一样访问单个的选择框。

下面让我们使用一个包含10个check boxes的表单form来证明上面这个概念。

<form name="example">
<input type="checkbox" name="myboxes" /><br />
<input type="checkbox" name="myboxes" /><br />
<input type="checkbox" name="myboxes" /><br />
<input type="checkbox" name="myboxes" /><br />
<input type="checkbox" name="myboxes" /><br />
<input type="checkbox" name="myboxes" /><br />
<input type="checkbox" name="myboxes" /><br />
<input type="checkbox" name="myboxes" /><br />
<input type="checkbox" name="myboxes" /><br />
<input type="checkbox" name="myboxes" /><br />
</form>

在上面这个表单,我们对每一个选择框都给了同一个名字,那么现在就来看看究竟是怎么样就可以轻易的访问每个选择框:

<script type="text/javascript">
//access the 3rd checkbox
document.example.myboxes[2];
//access the last checkbox
document.example.myboxed[9]; //access each and every one of the boxes
for(var i=0; i<document.example.myboxes.length ; i++){
document.example.myboxes[i] = //do whatever
}
</script>

是的,就如我们所看到的,通过将每一个checkbox命名为同一个名字后,它们就会成为一个包含所有同名checkbox的数组。

如何从多个checkbox的组合中获取被选中的选择框呢?

总的来说,共有两个方法可以被用来判断组合当中的哪个选择框被选中了。请看下面的例子:

<form name="tv">
NBC:<input type="radio" name="station" /><br />
CBS:<input type="radio" name="station" /><br />
ABC:<input type="radio" name="station" /><br/>
CNN:<input type="radio" name="station" /><br/>
ESPN:<input type="radio" name="station" /><br/>
</form>

或许你想要选择NBC,并且你想要在当NBC被选中同时执行某一些操作,其他的则不执行操作。无论你想要脚本去做什么,最根本你必须先要脚本能够判断哪个选择框被选中。下面的就是两个方法帮助我们实现:

1)使用for循环来遍历整个选择框数组,并获取到被选中的那个选择框

调用for循环来遍历整个数据,并且最终获取出被选中的。

// a variable that will hold the index number of the selected radio button
var theOne;
for(var i=0;i<document.tv.station; i++){
if(document.tv.station[i].checked === true){
theOne = i;
break;//exist for loop, as target acquired
}
}

2)在<input>标签内使用onClikc来获取被选中的选择框

<script type="text/javascript">
var theOne;
<form name="tv">
NBC:<input type="radio" name="station" onClick="theOne=0" /><br />
CBS:<input type="radio" name="station" onClick="theOne=1" /><br/>
ABC:<input type="radio" name="station" onClick="theOne=2" /></br/>
CNN:<input type="radio" name="station" onClikc="theOne=3"/><br/>
ESPN:<input type="radio" name="station" onClick="theOne=4" /><br/>
</form> </script>
<script type="text/javascript">
var theOne;
<form name="tv">
NBC:<input type="radio" name="station" onClick="theOne=0" /><br />
CBS:<input type="radio" name="station" onClick="theOne=1" /><br/>
ABC:<input type="radio" name="station" onClick="theOne=2" /></br/>
CNN:<input type="radio" name="station" onClikc="theOne=3"/><br/>
ESPN:<input type="radio" name="station" onClick="theOne=4" /><br/>
</form> </script>

无论用户何时点击其中的一个选择框,变量"theOne"将会被设置为该选择框的索引值。

以上例子中,我们展示了在只能选择一个选择框情况下是如何判断哪个选择框被选中了。

在多选的情况下,使用for循环去检索整个数组和保存被选中的选择框索引,比使用onClick事件更加好。

原文来源:http://www.javascriptkit.com/javatutors/radiocheck3.shtml

[label][翻译][JavaScript]如何使用JavaScript操纵radio和check boxes的更多相关文章

  1. [译]内联Javascript vs 外置Javascript

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  2. javaScript系列 [05]-javaScript和JSON

    本文输出和JSON有关的以下内容❐ JSON和javaScript❐ JSON的语法介绍❐ JSON的数据类型❐ JSON和XMLHTTPRequest❐ JSON的序列化和反序列化处理 1.1 JS ...

  3. 2021年3月-第03阶段-前端基础-JavaScript基础语法-JavaScript基础第01天

    1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的指令集合,而程序全部都是用我们所掌 ...

  4. JavaScript权威设计--JavaScript函数(简要学习笔记十一)

    1.函数调用的四种方式 第三种:构造函数调用 如果构造函数调用在圆括号内包含一组实参列表,先计算这些实参表达式,然后传入函数内.这和函数调用和方法调用是一致的.但如果构造函数没有形参,JavaScri ...

  5. JavaScript权威设计--JavaScript函数(简要学习笔记十)

    1.函数命名规范 函数命名通常以动词为前缀的词组.通常第一个字符小写.当包含多个单词时,一种约定是将单词以下划线分割,就像"like_Zqz()". 还有一种就是"lik ...

  6. javascript笔记:javascript的关键所在---作用域链

    javascript里的作用域是理解javascript语言的关键所在,正确使用作用域原理才能写出高效的javascript代码,很多javascript技巧也是围绕作用域进行的,今天我要总结一下关于 ...

  7. JavaScript强化教程——JavaScript 总结

    本教程中我们向您讲授了如何向 html 页面添加 JavaScript,使得网站的动态性和交互性更强. 你已经学习了如何创建对事件的响应,验证表单,以及如何根据不同的情况运行不同的脚本. 你也学到了如 ...

  8. JavaScript学习13 JavaScript中的继承

    JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式 ...

  9. Javascript学习2 - Javascript中的表达式和运算符

    原文:Javascript学习2 - Javascript中的表达式和运算符 Javascript中的运算符与C/C++中的运算符相似,但有几处不同的地方,相对于C/C++,也增加了几个不同的运算符, ...

随机推荐

  1. prototype & __proto__

    [普通对象 vs 函数对象] js中对象分为两类,普通对象.函数对象.当在终端打印时,普通对象与函数对象有极其明显的差异. 一个不含杂七杂八的函数对象如下,这是第一种表现形式.: 若往里面塞东西,则会 ...

  2. hdoj1043 Eight(逆向BFS+打表+康拓展开)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 思路: 由于自己对康拓展开用的太少,看到这个题没想到康拓展开,最开始打算直接转换为数字,但太占内 ...

  3. SQL Server多条件查询的实现

    SQL Server多条件查询的实现 SQL Server多条件查询我们经常会用到,下面就教您如何使用存储过程实现SQL Server多条件查询,希望对您学习SQL Server多条件查询方面有所帮助 ...

  4. xcode - 显示安装过的低版本模拟器

    1. 更改版本

  5. MongoDB的文档、集合、数据库(二)

    为了理解MongoDB的名词,可以将其于关系型数据库进行对比: 一.文档 概述 文档是MongoDB的核心概念,是数据的基本单元,非常类似于关系数据库中的行.在MongoDB中,文档表示为键值对的一个 ...

  6. C# Socket网络编程精华篇

    我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本 ...

  7. Spring整合Struts2框架的第二种方式(Action由Spring框架来创建)(推荐大家来使用的)

    1. spring整合struts的基本操作见我的博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,这里面将spring与struts2框架整 ...

  8. 如何利用jQuery post传递含特殊字符的数据【转】

    在jQuery中,我们通常利用$.ajax或$.post进行数据传递处理,但这里通常不能传递特殊字符,如:“<”.本文就介绍如何传递这种含特殊字符的数据. 1.准备页面和控制端代码 页面代码如下 ...

  9. Redis数据持久化

    持久化选项 Redis提供了两种不同的持久化方法来将数据存储到硬盘里面.一种方法叫快照(snapshotting),它可以将存在于某一时刻的所有数据都写入硬盘里面.另一种方法叫只追加文件(append ...

  10. Oracle 基础表查询

    --查询所有用户表的数据 SELECT * FROM ALL_TABLES WHERE OWNER='USER_NAME' --如果是用该用户登录使用以下语句: SELECT * FROM USER_ ...