Трудность сдедующая. Есть код написанный мной (используется jquery ):
var PDNS = function() //это пространство имен
{ var pullDownList = new Object(); // это переменная в которй будем хранить объект описаный ниже
function pullDownListI() // это объект который храниться в переменной выше, он является интрефейсом для работы с HTML элементами
{ this.index = 0;
this.objId = 0;
this.init = function( objId ) // инициализирует интерфейс при получении фокуса
{ this.index = 0;
this.objId = objId;
$( "#"+objId ).keyup( function(){ PDNS.pullDownList.keypress( event ) } )
}
this.reset = function( ) // сбрасывает все настройки интерсейса при потери фокуса
{ this.index= 0;
this.objId = null;
}
this.keypress= function ( event )
{
//////////////////////////////////////////
this.index++; //здесь проблемная зона
///////////////////////////////////////
$( "#test" ).text( this.index ); // выводим результат в элемент #test , что бы не потерять фокус на элементе
}
}
return {
pullDownListI: pullDownListI, //делаем публичными переменные
pullDownList: pullDownList
}
}();
$(document).ready( function()
{
PDNS.pullDownList = new PDNS.pullDownListI();
var listElement = $("#element");
//назначаем элементам выполнение функций при получении и потере фокуса
for ( i=0; i<listElement.length; i++)
{ var id = listElement[i].id;
if ( id )
{ $( listElement[i] ).focus( function ( ) { PDNS.pullDownList.init( id ) } );
$( listElement[i] ).blur( function () { PDNS.pullDownList.reset() } );
}
}
//alert( listElement.length );
} );
При первом получении фокуса и выполнении this.index++, все ОК.
При потере и следующем получении фокуса this.index++ прибавляет 2 вместо 1. Если еще раз потерять и получить фокус прибавляться будет уже 3 и т.д. Кто знает вчем трудность и где ошибка подскажите, уже голову сломал. Или это глюк, какой-то.Код вроде простой.