Проблема со смежной функцией в прототипе - PullRequest
1 голос
/ 04 апреля 2010

Входное значение rz

В голове у меня:

Event.observe(window, 'load', function() {

$$("input").each(function(field){
  Event.observe(field, "focus", function(input) {
    input.adjacent('p.msg').show();
  });
  Event.observe(field, "blur", function(input) {
    input.adjacent('p.msg').hide();
  });
});

});

Идея состоит в том, что, когда ввод получает фокус, появляется элемент p и при размытии он исчезает. Проблема в том, что ни один из них не работает, и на консоли ошибок отображается сообщение: «input.adjacent не является функцией»

Я использую прототип 1.6.1 и scriptaculous 1.8.3

Ответы [ 2 ]

1 голос
/ 04 апреля 2010

То, что говорит el.pescado, является правдой.

Возможно, вам следует использовать .next () или .previous () вместо .adjacent (), если вы хотите получить элемент рядом с элементом, инициирующим событие.

0 голосов
/ 04 апреля 2010

Аргумент, переданный в обработчик события (т.е. функция, переданная в функцию Event.observe), является объектом события, а не целевым элементом. Элемент, к которому привязан обработчик события, передается как указатель «this», поэтому вы должны использовать:

this.adjacent('p.msg').hide();
...