我有原型1.5,我无法使用“下一个”功能:
Event.observe('sameAsBefore', 'click', function(item){
checkbox = Event.element(item);
if (checkbox.checked == true) {
checkbox.next('address1').value = $('hidden_address1').value;
}
}
与以下html一起使用:
<div class="some_div">
<a class="sameAsBefore">Same</a>
<input class="address1" name="parent[address1]" size="30" type="text" />
</div>
<div class="some_div">
<a class="sameAsBefore">Same</a>
<input class="address1" name="parent2[address1]" size="30" type="text" />
</div>
我想在同一个div中的字段中触发更新,这就是我使用.next()的原因。
ERROR:
checkbox.next("address1") is undefined
anonymous(click clientX=645, clientY=300)applicat...259176252 (line 32)
[Break on this error] checkbox.next('address1').value = $('hidden_address1').value;\n
可能出现什么问题?
答案 0 :(得分:0)
我无法理解为什么你在这种情况下甚至使用next。如果您知道元素的ID
,那么您应该通过以下内容进行定位:
$('address1').value = $('hidden_address1').value;
您绝对不需要通过.next('#address1')
(在评论中提到)定位,因为ID
应该是文档的唯一。
如果这不能解决您的问题,请发布更全面的HTML代码段,我将能够告诉您如何正确定位元素。在旁注中,有没有任何理由说明为什么你没有使用更新版本的原型,因为你使用的是旧版本,如果你使用的是1.5
答案 1 :(得分:0)
由于您有重复的ID,因此您的示例标记看起来不会起作用。除此之外,看起来next()
函数将CSS规则作为选择器。
你试过这个:
Event.observe('sameAsBefore', 'click', function(item){
checkbox = Event.element(item);
if (checkbox.checked == true) {
checkbox.next('.address1').value = $('hidden_address1').value;
}
}
这也假设你有一个ID为“hidden_address1”的元素。
答案 2 :(得分:0)
我在示例中没有看到任何ID。我看到只使用类 es。我也没有看到任何复选框。
如果avobe html像fllowing一样,
<div class="some_div">
<a class="sameAsBefore">Same</a>
<input class="address1" name="parent[address1]" size="30" type="text" />
</div>
<div class="some_div">
<a class="sameAsBefore">Same</a>
<input class="address1" name="parent2[address1]" size="30" type="text" />
</div>
您可以使用
获得所需的输出$$('.sameAsBefore').each(function(item){
item.observe('click', function(e){
item.next('.address1').value = "tested OK";
});
});
感谢。