Помогите в замыкании универсальной функции для обработчиков событий 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. Ввожу в первое поле буквы - реагирует, что верно введено (подозреваю опять же из-за того, что во втором поле введены цифры).  | 
	
		
 Обработчики работают аналогично и с таким замыканием: 
	document_number.addEventListener("change", function () { validateField(event, 'document_number'); } , false); payment_sum.addEventListener("change", function () { validateField(event, 'payment_sum'); } , false);  | 
	
		
 Туплю. Ошибку нашел. 
	 | 
	
		
 Ничего не надо передавать. event и this забиндятся сами собой, а тип поля внедряете в объект на этапе развешивания колбаков хардкором.  
	
validateField = function() {
  if(this.flags & 1) // number  
  else if(this.flags & 2) // float
  else  // string by default
};
document_number.flags = 1;
document_number.addEventListener("change", validateField, false);
 | 
	
		
 Еще заметил: 
	Цитата: 
	
 Вешайте колбэк _непосредственно_ на поле ввода. Или инпутам уже отменили атрибут outline? И вообще ничего не понял чем занимается валидатор. На всякий случай: связи профтыкаются точно так же как любые други проперти. string_field = document.getElementById(); number_field.string_field = string_field;  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 Про связи не понял.  | 
| Часовой пояс GMT +3, время: 05:07. |