中不起作用,希望您可以提供帮助。我用一组单选按钮构建了一个带有窗体的页面,我想为每个窗体的onClick分配一个函数,以改变样式并突出显示选定了哪个无线电。这已经在使用直接分配的onClick事件的旧版本的代码中工作,但在更新它时,我需要将它们更改为使用Event系统在运行时分配的功能。我使用的原型1.6.0.1和下面的代码工作正常在FF,而不是IE:使用Prototype Event.Observe分配功能在IE(7)
HTML:
<form name="the_form" onsubmit="investmentPreApply(); return false;" id="the_form">
<fieldset class="investment-apply-box1">
<label for="cautious" id="cautiousLabel" class="isa-option">
<input type="radio" id="cautious" name="radios" value="cautious" />Cautious Portfolio
</label>
<label for="balanced" id="balancedLabel" class="isa-option">
<input type="radio" id="balanced" name="radios" value="balanced" />Balanced Portfolio
</label>
<label for="adventurous" id="adventurousLabel" class="isa-option">
<input type="radio" id="adventurous" name="radios" value="adventurous" />Adventurous Portfolio
</label>
<label for="mixed" id="mixedLabel" class="isa-option">
<input type="radio" id="mixed" name="radios" value="mixed" />Invest in a bit of each
</label>
<div class="isa-body-text-hidden" id="error-text">Please choose your ISA above</div>
</fieldset>
<div class="investment-apply-box2">
<!--Lots more HTML here-->
</div>
</form>
JS:
findInvestmentPreApply: function() {
if ($('investment') && $('the_form')) {
var formItems = $$('.isa-option input');
formItems.each(function(s,i){
Event.observe(s, 'click', function() {highlightRadioChoice(s.id)});
})
}
},
我已经试过的各种组合添加.bind(this)和.bindAsEventListener没有任何成功。
奏效原始代码看起来是这样的:
<label for="cautious" id="cautiousLabel" class="isa-option">
<input type="radio" id="cautious" name="radios" value="cautious" onclick="highlightRadioChoice('cautious');" />Cautious Portfolio
</label>
,并呼吁highlightRadioChoice功能并没有改变。
如果有帮助,highlightRadioChoice函数与事件代码位于不同的js文件中,事件代码本身位于页面加载时运行的js文件中,以实现渐进式增强方法。我忍不住想,如果我将highlightRadioChoice函数移动到加载时运行的文件中,它将正常工作(即调用this.highlightRadioChoice(...)),但这意味着需要更改整个其他页面的负载不想在这个阶段。
请帮我看看StackOverflow!
========编辑=========
与大纪元一些帮助,我发现这很复杂的功能在IE和FF作品:
findInvestmentPreApply: function() {
if ($('investment') && $('the_form')) {
var formItems = $$('.isa-option');
formItems.each(function(s){
s.observe('click', function() {highlightRadioChoice(s.id.substring(0,s.id.indexOf('Label')))});
})
}
},
仍然不知道为什么这应该工作,我以前的代码不会。
感谢您的回复。你的小提琴适用于我的IE7,但是当我把代码放入我的页面时,它不会。我没有收到任何错误消息。 我在循环中放置了一个警告,以确保它正在通过那个好,它是。 – ThatITBloke
我很高兴它的工作原理,随时接受答案和投票:) – epoch
我会接受你的答案,但在它自己的问题没有什么不同,它只是当我引用封闭的标签ID,然后下标所附输入的ID是否正常工作。我不认为我找到的解决方案是正确的,我仍然乐于接受更好的建议。 – ThatITBloke