• 21.11.2018, 17:04:08 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Внимание!
Открыто голосование Отсеивание поисковых систем, выскажите своё мнение о том, какие поисковые системы нужно оставить в сборке.

Ваше мнение может повлиять на ход развития.

collapse
* Голосование
  • Нравится ли Вам Opera AC?
  • Dot Конечно, она просто супер!
  • 1597 (77%)
  • Dot В целом да, но много лишнего..
  • 366 (17%)
  • Dot Для ознакомительных целей
  • 64 (3%)
  • Dot Нет
  • 24 (1%)
  • Dot А что это такое?
  • 20 (0%)
  • Проголосовало пользователей: 2025
  • Смотреть тему

Реклама:

Баг трекер
  Проект История версий   Активные тикеты    

Bug Тикет: Некорректное выделение BB-кода в текстовом поле

CreatoR

  • AC Team
  • Админ
  • *
  • Репутация: 46
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 3109
  • CreatoR - Это не Ник, CreatoR - Это стиль Жизни!
    • WWW
Нужно поправить выделение текста с тегами при вставке выделенного текста на странице, содержащего более чем одну строку.
Выделение не полное, и всему виной BBCode.js, который не берёт в расчёт символ новой строки:

Вот вроде решение:

//Подсчёт количества переходов на новую строку (LF)
var lflen = s.match(/[^\n]*\n[^\n]*/gi);
if(lflen) {lflen=lflen.length} else {lflen=0};
ta.value=s;
ta.setSelectionRange(nStart, nEnd + lflen);
ta.focus();
Записан

Детали тикета

  • Создано
    06.07.2011, 02:31:27
  • Обновлён
    20.07.2011, 21:38:13
  • Статус тикета
    Публичный
  • Тип
    Bug
  • Статус
    Решено
  • Приоритет
    Средний
  • Версия
    3.7.8 (10.63.3516.4)
  • Решено в версии
    3.7.8 (10.63.3516.5)
  • Передано к исполнению
    CreatoR
  • Категория
    Функции OAC
Страницы: [1]   Вверх

Комментарии

CreatoR

  • AC Team
  • Админ
  • *
  • Репутация: 46
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 3109
  • CreatoR - Это не Ник, CreatoR - Это стиль Жизни!
    • WWW
Тикет измененил CreatoR
« : 06.07.2011, 02:33:17 »
  • Изменена исправленная версия с (пусто) на 3.7.8 (10.63.3516.5)
  • Изменён исполнитель с (пусто) на CreatoR
  • Изменён статус с Новый на Решено
Записан
Читаем FAQ по OAC! и Список изменении OAC перед тем как задать вопрос.



P.S
«Не оказываю техподдержку через ПМ/ICQ, и по электронной почте - для этого есть форум.»

CreatoR

  • AC Team
  • Админ
  • *
  • Репутация: 46
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 3109
  • CreatoR - Это не Ник, CreatoR - Это стиль Жизни!
    • WWW
« Ответ #1 : 20.07.2011, 18:19:23 »
Немного исправленное решение, т.к нужно ещё учитывать количество строк в текстовом поле:

var slflen = s.match(/[^\n]*\n[^\n]*/gi); //Lenght of LF's in selected text
var talflen = ta.value.match(/[^\n]*\n[^\n]*/gi); //Lenght of LF's in textarea

if(slflen) {slflen=slflen.length} else {slflen=0};
if(talflen) {talflen=talflen.length} else {talflen=0};

ta.value=s;
ta.setSelectionRange(nStart, nEnd + slflen - talflen);
ta.focus();
Записан
Читаем FAQ по OAC! и Список изменении OAC перед тем как задать вопрос.



P.S
«Не оказываю техподдержку через ПМ/ICQ, и по электронной почте - для этого есть форум.»

UnShame

  • Поклонник
  • ***
  • Репутация: 3
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 108
    • WWW
« Ответ #2 : 20.07.2011, 19:44:29 »
а можно весь исправленный скрипт? не пойму где это должно быть
Записан

CreatoR

  • AC Team
  • Админ
  • *
  • Репутация: 46
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 3109
  • CreatoR - Это не Ник, CreatoR - Это стиль Жизни!
    • WWW
« Ответ #3 : 20.07.2011, 19:50:00 »
И ещё одно исправление, т.к при встаке многострочных тегов выделение ставилось неправильно:

var s_lf_len = s.match(/[^\n]*\n[^\n]*/gi); //Lenght of LF's in selected text
var ta_lf_len = ta.value.match(/[^\n]*\n[^\n]*/gi); //Lenght of LF's in textarea
var tag_lf_len = tag.match(/[^\n]*\n[^\n]*/gi); //Lenght of LF's in tag
var e_tag_lf_len = e_tag.match(/[^\n]*\n[^\n]*/gi); //Lenght of LF's in e_tag (second optional closing tag)
var tags_lf_len=0;

if(s_lf_len) {s_lf_len=s_lf_len.length} else {s_lf_len=0};
if(ta_lf_len) {ta_lf_len=ta_lf_len.length} else {ta_lf_len=0};
if(tag_lf_len) {tags_lf_len+=tag_lf_len.length};
if(e_tag_lf_len) {tags_lf_len+=e_tag_lf_len.length};

if (ta.selectionStart==ta.selectionEnd) {tags_lf_len=-tags_lf_len} else {tags_lf_len=0};

ta.value=s;
ta.setSelectionRange(nStart, nEnd + s_lf_len - ta_lf_len + tags_lf_len);
ta.focus();

правда не уверен что это правильное решение.
Записан
Читаем FAQ по OAC! и Список изменении OAC перед тем как задать вопрос.



P.S
«Не оказываю техподдержку через ПМ/ICQ, и по электронной почте - для этого есть форум.»

CreatoR

  • AC Team
  • Админ
  • *
  • Репутация: 46
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 3109
  • CreatoR - Это не Ник, CreatoR - Это стиль Жизни!
    • WWW
« Ответ #4 : 20.07.2011, 21:38:13 »
UnShame [?]
Цитировать
где это должно быть
Замени:

ta.value=s;
ta.setSelectionRange(nStart, nEnd);
ta.focus();
Записан
Читаем FAQ по OAC! и Список изменении OAC перед тем как задать вопрос.



P.S
«Не оказываю техподдержку через ПМ/ICQ, и по электронной почте - для этого есть форум.»
Страницы: [1]   Вверх

 

Тэги


Powered by: SMF Project Tools 0.3.3 © Niko Pahajoki 2007-2009

Реклама:

Счетчик

Страница сгенерирована за 0.035 секунд. Запросов: 34.