Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.04.2010, 11:56
Аватар для Roman Koff
Аспирант
Отправить личное сообщение для Roman Koff Посмотреть профиль Найти все сообщения от Roman Koff
 
Регистрация: 14.04.2010
Сообщений: 46

Выделение текста в текстовом поле. Как снять выделение с пробела вконце?
Подскажите, пжалста, кто знает ...

Есть текстовое поле в которое вводится текст.

Если мышкой выделять по словам в тексте, то выделяется также пробел в конце последнего выделенного слова, при этом, если слово ограничено знаками припинания, то они не выделяются (за исключением одинарных кавычек в IE).

Какое событие и как надо модифицировать, чтобы выделение пробела и одинарных кавычек не происходило?
Ответить с цитированием
  #2 (permalink)  
Старый 14.04.2010, 16:41
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Поставить contentEditable = true, затем при каждом нажатии клавиши заменять кавычки на это: <span unselectable="on">'</span>.
Ответить с цитированием
  #3 (permalink)  
Старый 14.04.2010, 22:06
Аватар для Roman Koff
Аспирант
Отправить личное сообщение для Roman Koff Посмотреть профиль Найти все сообщения от Roman Koff
 
Регистрация: 14.04.2010
Сообщений: 46

Спасибо, конечно, но мимо кассы.

Есть текстовое поле, в которое я ввожу текст. Надо чтобы при выделении не захватывался последний пробел у выделенных слов. ХТМЛ тут не при чем.

Алогритм, как я представляю, следующий:
событие выделения -- проверить, является ли последний символ в выделении пробелом, если да, сдвинуть маркер конца выделения на 1 позицию назад.

Конечно, возможно это бредовая задача, но в работе очень напрягает все время вручную фиксить окончание выделения.
Ответить с цитированием
  #4 (permalink)  
Старый 14.04.2010, 23:37
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Roman Koff
Конечно, возможно это бредовая задача, но в работе очень напрягает все время вручную фиксить окончание выделения.
а проще: в скрипте делать trim()
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #5 (permalink)  
Старый 15.04.2010, 10:57
Аватар для Roman Koff
Аспирант
Отправить личное сообщение для Roman Koff Посмотреть профиль Найти все сообщения от Roman Koff
 
Регистрация: 14.04.2010
Сообщений: 46

Я яваскрипт пару дней назад начал изучать. Вопрос очевиден, куда надо трим засунуть?

Финальная задача такая:
При выделении слов в поле редактора я могу обернуть их (через функции редактора) в тег. Но при стандартном выделении, ессно, захватывается еще и пробел, который там нафиг не нужен. Это очень бесить. Приходится при редактировании постоянно на клавиру переключатьсо.

Пример:
- "Южно-эфиопский грач увёл мышь за хобот на съезд ящериц." -- исходный текст в редакторе
- "Южно-эфиопский |грач увёл мышь за |хобот на съезд ящериц." -- вид текста при выделении
- "Южно-эфиопский <em>грач увёл мышь за </em>хобот на съезд ящериц." -- результат "обертки" в тег

Как должно бы быть:
- "Южно-эфиопский |грач увёл мышь за| хобот на съезд ящериц." -- вид текста при выделении
- "Южно-эфиопский <em>грач увёл мышь за</em> хобот на съезд ящериц." -- результат "обертки" в тег

Последний раз редактировалось Roman Koff, 15.04.2010 в 11:11.
Ответить с цитированием
  #6 (permalink)  
Старый 15.04.2010, 11:15
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Roman Koff
Я яваскрипт пару дней назад начал изучать
и сразу с выделениями связались, вот же не повезло вам, наверное возненавидете js после этого.
Ответить с цитированием
  #7 (permalink)  
Старый 15.04.2010, 11:22
Аватар для Roman Koff
Аспирант
Отправить личное сообщение для Roman Koff Посмотреть профиль Найти все сообщения от Roman Koff
 
Регистрация: 14.04.2010
Сообщений: 46

Просто решил привентить Markitup к системе и тут наткнулся на эту фичу современных редакторов. Обратил внимание, что это правило распространяется на большинство редакторов, например ВОРД, НОТЕПАД ...

Интересно, на других платформах также? (щас нет возможности проверить).

На самом деле, я понял, что в данном случае -- это как с мельницами сражаться. Впринципе, всеравно все работает. Так для общего развития интересно, как можно решить данную задачу ...
Ответить с цитированием
  #8 (permalink)  
Старый 15.04.2010, 11:28
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Roman Koff, для интереса заглянул в свои OpenOffice, AkelPad и Geany -- выделяют по слову, без пробела. Notepad -- как идиот. MS Word -- нет возможности проверить. Навскидку, для чего это зделано мелкомягкими -- чтобы, если Вы выделили слово, сделали его, к примеру, bold, то потом Вы и дальше будете писать bold'ом. Говноидея.

Опера 10.51 выделяет нормально, Firefox 3.6.3 -- опять же как идиот.

Платформа: Win 7

Сообщение от Roman Koff Посмотреть сообщение
На самом деле, я понял, что в данном случае -- это как с мельницами сражаться. Впринципе, всеравно все работает. Так для общего развития интересно, как можно решить данную задачу ...
Когда оборачиваете в тег, учитывайте, что пробелы в конце нужно "вернуть на место", вот и все.

Последний раз редактировалось e1f, 15.04.2010 в 11:31.
Ответить с цитированием
  #9 (permalink)  
Старый 17.04.2010, 09:08
Новичок на форуме
Отправить личное сообщение для axelshow Посмотреть профиль Найти все сообщения от axelshow
 
Регистрация: 17.04.2010
Сообщений: 1

Ответить с цитированием
  #10 (permalink)  
Старый 20.04.2010, 11:15
Аватар для Roman Koff
Аспирант
Отправить личное сообщение для Roman Koff Посмотреть профиль Найти все сообщения от Roman Koff
 
Регистрация: 14.04.2010
Сообщений: 46

Ну так и сделал, пример, если кому нужно будет:
function setTag(s, beg, end) {
	var se = (s[s.length - 1] == ' ') ? ' ' : '';
	return beg + Trim(s) + end + se;
}


Возник еще интересный момент, может кто сталкивался:

Если в редактор (испытывал на CKEditor и Markitup) вставить код спецсимвола, например: &nbsp; &ndash; &laquo; и т.п., то, после нескольких отправок (сохранений) код символа в исходнике превращается в фактическое значение (литерал).

Что хочется: 1. как прибить это "превращение" (т.е. чтобы в исходнике всегда был код, а не литерал); 2. как из JS вставлять в документ литерал по коду (принудительно делать рендеринг кода в литерал).
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
Изменение текста слоя по изменениям в текстовом поле Воитель Общие вопросы Javascript 4 21.10.2008 11:03
Как запретить submit при пустом текстовом поле? Bad Request Events/DOM/Window 5 05.10.2008 15:40
вывод нужного текста в текстовом поле при нажатии на кнопку! fifo4ka Общие вопросы Javascript 7 06.05.2008 13:36