首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用原型JS观察单选按钮的变化

用原型JS观察单选按钮的变化
EN

Stack Overflow用户
提问于 2011-03-10 05:37:33
回答 3查看 14.1K关注 0票数 5

我对Prototype JS (v1.7)还比较陌生,而且我被困在了一些东西上。我试图检测单选按钮的选择何时发生更改。下面是代码:

单选按钮:

代码语言:javascript
代码运行次数:0
运行
复制
<input class="amounts" type="radio" name="amount" id="amount-1" value="1" />
<input class="amounts" type="radio" name="amount" id="amount-2" value="2" />
<input class="amounts" type="radio" name="amount" id="amount-3" value="3" />

Javascript:我试了一试,这是行不通的:

代码语言:javascript
代码运行次数:0
运行
复制
Event.observe($$('amounts'), 'change', function(event) {
    alert('change detected');
});

当表单加载时,不检查单选按钮。我希望Javascript能够检测到这些事件:

  1. 单选按钮当以前没有选择时选择单选按钮
  2. 单选按钮选择更改

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-10 11:38:30

它不能工作,因为$$返回一个元素数组,而Event只需要一个元素。另外,$$('amounts')不匹配任何元素,也没有<amounts>标记。

一个更好的方法是使用一个易于识别的祖先元素。

代码语言:javascript
代码运行次数:0
运行
复制
<form id="amounts-form">
    <input class="amounts" type="radio" name="amount" id="amount-1" value="1" />
    <input class="amounts" type="radio" name="amount" id="amount-2" value="2" />
    <input class="amounts" type="radio" name="amount" id="amount-3" value="3" />
</form>

现在有一个唯一的ID可以使用,我们可以使用Event.on

代码语言:javascript
代码运行次数:0
运行
复制
$('amounts-form').on('change', '.amounts', function(event) {
    alert('change detected');
});

注意,事件是由'.amounts'过滤的,句点说要使用类名。

如果您正在使用FireBug开发FireFox或Chrome的开发工具,那么您可以直接在控制台中测试脚本的部分内容。通过键入$$('.amounts')来确定选择器是否与您认为是的元素相匹配,这真的很有帮助。

票数 12
EN

Stack Overflow用户

发布于 2011-03-17 20:02:56

Alterne格罗的回答试图使用迭代器将事件处理程序直接附加到“an”无线电元素,但由于以下几个原因无法工作:

  1. "$“函数不以css选择器作为参数,只使用ids。使用"$$“代替。
  2. css "id”属性选择器应该包括正方形大括号"[]“。也拼错了。“the”应该是“the”,以匹配示例中的in。或者只使用类选择器:".amounts".
  3. There不是可以在可枚举项上调用的“更改”方法。使用invoke或其他一些可枚举的方法代替.

这一项应能发挥作用:

代码语言:javascript
代码运行次数:0
运行
复制
$$("[id^=amount-]").invoke(
    'on', 
     'change',
     function(){alert("hello " + this.id)}
)

(YMMV在事件处理程序中使用"this“。我只检查了Firefox中的代码

票数 2
EN

Stack Overflow用户

发布于 2011-03-10 06:00:03

更有效的方法是只给这些复选框相同的类,但你也可以尝试

代码语言:javascript
代码运行次数:0
运行
复制
$("id^=amounts-").change(function(){alert("blah blah")})
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5255911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档