Показать сообщение отдельно
  #2 (permalink)  
Старый 04.09.2012, 23:42
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Дело в том что вы вешаете событие change каждый раз когда срабатывает событие dblclick. Вариантов два, либо снимать событие по окончанию редактирования, либо изначально вешать только один раз (вне функции).

Снимаем событие:
$(".inputs_client").bind('dblclick', function() {
            $(this).css("backgroundColor", "red");
            $(this).css("color", "white");
            var textbefore = $(this).attr('value');
            this.readOnly = false;
            $(this).bind('change.myEvent', function() {
                    if (!confirm('Вы уверены?')) {
                        $(this).attr('value', textbefore);
                        textbefore = null;
                    } else {
                        $(this).attr('value', this.value);
                        textbefore = null;
                    }
                    $(this).unbind('change.myEvent');
                });
        });
        $(".inputs_client").bind('blur', function() {
            this.readOnly = true;
            $(this).css("backgroundColor", "white");
            $(this).css("color", "black");
        });


Вешаем один раз:
$(".inputs_client").bind('dblclick', function() {
            $(this).css("backgroundColor", "red");
            $(this).css("color", "white");
            $(this).data('textbefore', $(this).attr('value'));
            this.readOnly = false;
        });
        $(".inputs_client").bind('blur', function() {
            this.readOnly = true;
            $(this).css("backgroundColor", "white");
            $(this).css("color", "black");
        });
$(".inputs_client").bind('change', function() {
                    if (!confirm('Вы уверены?')) {
                        $(this).attr('value', $(this).data('textbefore'));
                        textbefore = null;
                    } else {
                        $(this).attr('value', this.value);
                        textbefore = null;
                    }
                });


Примерно так.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием