При вызове из функции setTimeout
указатель this
больше не указывает на элемент ввода, а указывает на объект window
.
Что вы можете сделать, это
onKeyDown="var self=this;setTimeout(function(){validate(self);}, 10)"
Или еще лучше:
var validateFn = function(element) {
return function(){
alert(element.id);
};
}
и на элементе:
onKeyDown="setTimeout(validateFn(this), 10)"