原型,听收音机按钮的变化
Prototype, listening to a change in radio buttons
我已经为此寻找了好几天的解决方案,所以我希望您能提供帮助。
我使用Ryan Fait的自定义表单元素,它可以让你设置复选框和单选按钮等的样式。
唯一的问题是我不能再使用onClick事件了,因为实际的框会被带有自定义单选元素图像的覆盖。
javascript确实更改了单选按钮,但我似乎找不到检测更改的方法。。
目前,我已经尝试过这个:
Event.observe(window, 'load', function() {
$('startquestion').observe('change', set_startanswer(this.value));
});
HTML:
<p>
<input type="radio" class="styled" name="startanswer" id="startquestion" value="'.$startq['id'].'" onclick="if (this.checked == true) { set_startanswer(this.value); }"'.$s.'> <span id="startanswertext'.$startq['id'].'">'.$startq['question'].'</span>
</p>
不过,它似乎不起作用。
有人能帮我吗?
干杯!Danny
观察Radio列表上更改事件的最简单方法:
Form.getInputs('form','radio','radio_name').find(function(radio){
Event.observe(radio, 'change', function() {
//do whatever on this change
});
});
您正在使用的脚本隐藏原始复选框并显示上面的一些自定义图形。它会注册图形上的单击并相应地设置隐藏复选框,但通过编程设置复选框状态不会触发更改事件。
为了解决这个问题,您可能可以显式捕捉自定义图形上的单击(脚本创建了一个包装p
元素)。使用上面的代码行:
Event.observe(window, 'load', function() {
var startquestionElement = $('startquestion');
var startquestionState = startquestionElement.checked;
startquestionElement.up().observe('click', function() {
if (startquestionElement.checked != startquestionState) {
startquestionState = startquestionElement.checked;
set_startanswer(startquestionElement.value); // are you sure you want to use the element's value and not it's checked state?
}
});
});
另一种选择是使用计时器全局观察复选框状态,例如每100毫秒检查一次:
Event.observe(window, 'load', function() {
var startquestionElement = $('startquestion');
var startquestionState = startquestionElement.checked;
var observingInterval = setInterval(function() {
if (startquestionElement.checked != startquestionState) {
// If you want to stop observing after the checkbox has changed it's state once,
// uncomment the following line:
// clearInterval(observingInterval);
startquestionState = startquestionElement.checked;
set_startanswer(startquestionElement.value); // are you sure you want to use the element's value and not it's checked state?
}
}, 100);
});
您可以使用后一个版本在一个观察函数调用中检查多个复选框。
您可以从protolicious中包含event.simulate.js,然后直接在图像元素上触发本地点击事件。
$('id_of_button').simulate('click');
相关文章:
- 当文本不断变化时,如何避免在按钮内移动文本
- 启用/禁用按钮,单击并执行 SQL 时会发生变化
- 如何在JQuery中检测按钮值的变化
- 检测按钮单击时值更改的文本框值的变化
- jQuery UI 滑块 - 根据选择而变化的自定义滑动按钮
- 两个按钮,可随背景位置变化而切换,并在输入中显示结果
- 如何让一个ID不断变化的按钮做不同的事情
- 在不断变化的DIV上固定一个按钮
- 谷歌地图计算不同距离的内容框变化&单击按钮
- 根据单选按钮的状态变化使儿童内容出现/消失
- 原型,听收音机按钮的变化
- 如果按钮位置发生变化,ZClip SWF不会与按钮位置对齐
- 如何重载下拉下拉每个单选按钮上的变化和日期文本框的变化
- 随着背景颜色的变化而改变按钮颜色
- jQuery改变单选按钮上选择框的变化
- 根据触发按钮变化模态内容
- 隐藏提交按钮,除非表单/输入数据发生了变化
- 如何在点击按钮时实现背景图像位置变化的幻灯片效果
- 如何创建不同的按钮导航列表,所以当我点击按钮的内容/文本将根据我点击按钮的变化
- Javascript/jQuery检测哈希变化只有在浏览器的后退/前进按钮点击