Переключение между двумя счетчиками jQuery - PullRequest
0 голосов
/ 07 февраля 2011

пользователь может выбирать между двумя типами сообщений, каждый из которых имеет разную длину.Поддерживаемые типы сообщений: 160 и 1071.

Обычно пользователь выбирает тип и пишет свое сообщение.Но пока он пишет, он может изменить тип сообщения.

Вот как я использую счетчик:

switch(max){
        case 160:
            $('#message').NobleCount('#messageInfo',{
                max_chars: max,
                block_negative: true
            });
        break;
        case 1071:  
            $('#message').NobleCount('#messageInfo',{
                max_chars: max,
                block_negative: true,
                on_update: function(t_obj, char_area, c_settings, char_rem){
                    //...
                }
            });     
        break;
    }

Проблема в том, что при выборе 160 пользователь записал 160 символов и переключился на 1071, счетчик показывает 911 как оставшихся, но делаетне позволяет пользователю вводить дополнительные символы.

Я вызываю указанный выше код каждый раз, когда пользователь переключает типы сообщений.У кого-нибудь есть идеи по этой проблеме?Может быть, noble-count t просто нужно как-то удалить?Но не переписано ли это в любом случае в моем случае?

1 Ответ

3 голосов
/ 07 февраля 2011

Причина в том, что NobleCount не сбрасывает прослушиватели событий, которые он связывает. Поэтому, когда вы вызываете .NobleCount () во второй раз, хотя он добавляет прослушиватель событий, который не позволит вам ввести большее количество max_chars, старый все еще там, поэтому он будет продолжать блокировать вас от ввода меньшего количества max_chars.

Решение состоит в том, чтобы добавить 2 вызова функции в файл NobleCount:

В строках 285 и 294 изменить:

-- $(t_obj).keydown(function(e) {
++ $(t_obj).unbind('keydown').keydown(function(e) {

-- $(t_obj).keyup(function(e) {
++ $(t_obj).unbind('keyup').keydown(function(e) {

(- это старая строка, ++ - строка для ее замены)

Рабочий пример: http://jsfiddle.net/Fm5dC/ (Я буквально скопировал весь его js-файл из github в jsfiddle, поэтому это выглядит ужасно, хотя, если вы прокрутите кадр javascript, вы увидите, что я реализовал вышеупомянутое изменение)

Я, вероятно, должен упомянуть, что это не лучший обходной путь, потому что если у вас есть какой-нибудь другой keydown или keyup слушатель, он также удалит их, хотя я показал вам, где проблема, это не так сложно это исправление более прочное.

Также, пожалуйста, свяжитесь с автором плагина с описанием ошибки, этого обходного пути и т. Д., Чтобы он мог реализовать это для масс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...