Событие размытия сработало на фокусе

Я использую следующий кодjsFiddle:

function Field(args) {
    this.id = args.id;

    this.name = args.name ? args.name : null;
    this.reqType = args.reqType ? args.reqType : null;
    this.reqUrl = args.reqUrl ? args.reqUrl : null;
    this.required = args.required ? true : false;
    this.error = args.error ? args.error : null;

    this.elem = document.getElementById(this.id);
    this.value = this.elem.value;

    this.elem.addEventListener('blur', this, false);
    this.elem.addEventListener('focus', this, false);
}

// FormTitle is the specific field like a text field. There could be many of them.
function FormTitle(args) {
    Field.call(this, args);
}

Field.prototype.getValue = function() { return Helpers.trim( this.value ) };

Field.prototype.blur = function (value) {
    alert("blur");  
};

Field.prototype.focus = function (value) {
    alert("focus");  
};

Field.prototype.handleEvent = function(event) {
    var prop = event.type;
    if ((prop in this) && typeof this[prop] == "function")
        this[prop](this.value);
};

inheritPrototype(FormTitle, Field);
var title = new FormTitle({name: "sa", id: "title"});

function inheritPrototype(e, t) {
    var n = Object.create(t.prototype);
    n.constructor = e;
    e.prototype = n
}

if (!Object.create) {
    Object.create = function (e) {
        function t() {}
        if (arguments.length > 1) {
            throw new Error("Object.create implementation only accepts the first parameter.")
        }
        t.prototype = e;
        return new t
   }
}

Проблема в том, чторазмытие» событие срабатывает каждый раз, когда поле фокусируется, что противоположно тому, что выбуду ожидать. И это несмотря на то, что основное событиедаже не упоминается в коде. Проблема в том, что я не могу воспроизвести эту проблему в jsFiddle, но проблема происходит в IE.

Также на jsFiddle есть еще одна проблема. Событие фокуса срабатывает несколько раз ...

Есть ли возможное объяснение этому и / или решению?

Обновлено:

Бонусный вопрос (и последний по этому, обещаю). Я добавил функцию addEvent для динамического добавления событий в поля формы вместо того, чтобы добавлять их все непосредственно в родительский конструктор. ЭтоjsFiddle для этого. Я пытаюсь вызвать функцию, но это неКажется, не работает. Что я могу делать не так?

Ответы на вопрос(1)

Ваш ответ на вопрос