Показать сообщение отдельно
  #1 (permalink)  
Старый 29.01.2014, 04:38
Интересующийся
Отправить личное сообщение для iis_ Посмотреть профиль Найти все сообщения от iis_
 
Регистрация: 29.01.2014
Сообщений: 14

Помогите в замыкании универсальной функции для обработчиков событий addEventListener
Есть два поля, значения в которых нужно отвалидировать (только цифры).

Есть код:
function validateField (e, checked_field_id) {
e.stopPropagation();
e.preventDefault();

var checked_field = $('#' + checked_field_id),
container = checked_field.parent('.field-label').children('.validate-field');

if (isNaN(payment_sum.value) || payment_sum.value === "" || payment_sum.value === undefined) {
checked_field.addClass("wrong-data");
container.addClass("validate-no");
} else {
checked_field.removeClass("wrong-data");
container.removeClass("validate-no");
container.addClass("validate-yes");
}
}

document_number.addEventListener("change", function (e, id) {
return function() {
validateField(e, id);
};
}(event,'document_number')
, false);
payment_sum.addEventListener("change", function (e, id) {
return function() {
validateField(e, id);
};
}(event,'payment_sum')
, false);

Почему-то реакция для первого поля происходит с учетом верного/неверного значения во втором поле.
На значение во первом поле скрипт не реагирует.

Подробно:
1. Ввожу в первое поле цифры - реагирует, что неверно введено (подозреваю, т.к. смотрит на значение второго поля, которое еще не заполнено и равно пустой строке).
2. Ввожу во второе поле цифры - реагирует, что верно всё введено.
3. Ввожу в первое поле буквы - реагирует, что верно введено (подозреваю опять же из-за того, что во втором поле введены цифры).
Ответить с цитированием