Проблема, связанная с событием jquery - PullRequest
1 голос
/ 28 января 2012

Я создаю очень простую проверку формы, которая проверяет только обязательные поля. Это эксперимент, я знаю, что есть много плагинов для проверки форм.

То, что я делаю, вызывает функцию, передавая ей идентификатор формы и объект javascript в этом формате

{
  control_id1 : {required : 'message to display if control is empty'},
  control_id2 : {required : 'message to display if control is empty'},
  ...
}

Функция выполняет цикл по объекту js, используя for (var k in obj) {...} и проверяет, имеет ли элемент управления с данным идентификатором пустое значение, если он добавляет тег span к элементу управления непосредственный родитель с данным сообщением.

Он также связывает событие «размытия» с этим элементом управления, так что после потери фокуса проверка может быть применена к элементу управления еще раз.

Вы можете увидеть это в действии здесь: http://jsfiddle.net/yvjZF/

Как вы можете видеть, сообщения отображаются нормально, когда вы нажимаете кнопку. но если управление теряет фокус, оно отображает неверное сообщение.

Я не могу найти причину этого, возможно, у меня есть недоразумение в модели событий. Любая помощь по этому вопросу будет высоко ценится.

Спасибо
Anjan

1 Ответ

1 голос
/ 28 января 2012

Не совсем уверен, почему, но он начал работать, когда я внес изменения в следующий код:

for(var cid in validation_data)
{ 
    $('#' + cid).blur
    (
        function()
        {
            // validate_control($(this),validation_data[cid]);
            validate_control($(this),validation_data[$(this).attr('name')]);
        }
    );
}

Раньше у меня часто возникала эта проблема при кодировании с ActionScript, и это имело какое-то отношение китератор цикла, влияющий на предыдущие итерации цикла.Мое единственное объяснение состоит в том, что возможно, что переменная cid была передана по ссылке , а не по значению , как предполагалось.

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