события вложенных объектов - PullRequest
0 голосов
/ 26 апреля 2011

Я работаю над проектом проверки, и в настоящее время он настроен так, что мои входные данные перечислены как объекты.В настоящее время у меня есть этот код для настройки и запуска событий:

метод настройки и используемые функции

function setup(obj) {
    obj.getElement().onfocus = function() {startVal(obj)}
    obj.getElement().onblur = function() {endVal(obj)}
}

function startVal(obj) {
    obj.getElement().onkeyup = validate(obj)
}

function endVal(obj) {
    obj.getElement().onkeyup = ""
}

Обратите внимание на то, как он у меня, где onkeyupсобытие должно устанавливаться, когда объект получает фокус, однако когда я активирую ввод, он действует так, как будто я пометил функцию validate() непосредственно на onfocus, и он проверяется только тогда, когда я первоначально фокусирую ввод.

edit причина, по которой я настроил его таким образом, заключается в том, что у меня не каждый из моих элементов формы проверяется каждый раз, когда я запускаю событие onkeyup (которое будетмного, так как формы обычно включают в себя приличное количество печатания).Я заставил его работать, просто прикрепив функцию validate() к событию onkeyup.Я бы предпочел ограничить это таким образом, чтобы не было ненужной обработки.

Не можете ли вы установить события с другими событиями или есть что-то более конкретное, что я делаю неправильно?

Любая помощь приветствуется!


Вот некоторая дополнительная информация, которая может помочь:

Метод getElement

function getElement() {
    return document.getElementById(this.id)
}

Функция setEvents

function setEvents() {
    firstName.setup(firstName)
}

1 Ответ

2 голосов
/ 26 апреля 2011

Вы звоните validate напрямую.Если она не возвращает функцию, она не будет работать (возможно, вам следует прочитать мой другой ответ более подробно;)).Я думаю, что вы хотите:

obj.getElement().onkeyup = function() {validate(obj)};

И, как я уже говорил в своем комментарии, нет причин добавлять или удалять обработчик событий для focus.Событие keyup возникает только в том случае, если элемент получает входные данные, поэтому не , когда другие элементы получают входные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...