原型下一个功能

时间:2009-11-25 19:16:23

标签: javascript html prototypejs

我有原型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

可能出现什么问题?

3 个答案:

答案 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"; 
    });
}); 

感谢。