В объекте не корректно работает инкремента (++ или +=1))
Трудность сдедующая. Есть код написанный мной (используется 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 и т.д. Кто знает вчем трудность и где ошибка подскажите, уже голову сломал. Или это глюк, какой-то.Код вроде простой. :blink: |
у тебя при каждом фокусе объявляется событие keyup а оно не переопределяется а дополняется. получается после второго фокуса у тебя будут выполнятся уже две функции где инкрименируется свойство index
либо очищай событие keyup (.unbind) во время потери фокуса либо вынеси объявление .keyup туда же где .focus и .blur |
Блин точно, вот затупил!!! Спасибо огроменное!!!
|
Часовой пояс GMT +3, время: 12:23. |