14.04.2010, 11:56
|
|
Аспирант
|
|
Регистрация: 14.04.2010
Сообщений: 46
|
|
Выделение текста в текстовом поле. Как снять выделение с пробела вконце?
Подскажите, пжалста, кто знает ...
Есть текстовое поле в которое вводится текст.
Если мышкой выделять по словам в тексте, то выделяется также пробел в конце последнего выделенного слова, при этом, если слово ограничено знаками припинания, то они не выделяются (за исключением одинарных кавычек в IE).
Какое событие и как надо модифицировать, чтобы выделение пробела и одинарных кавычек не происходило?
|
|
14.04.2010, 16:41
|
Профессор
|
|
Регистрация: 21.01.2010
Сообщений: 1,022
|
|
Поставить contentEditable = true, затем при каждом нажатии клавиши заменять кавычки на это: <span unselectable="on">'</span>.
|
|
14.04.2010, 22:06
|
|
Аспирант
|
|
Регистрация: 14.04.2010
Сообщений: 46
|
|
Спасибо, конечно, но мимо кассы.
Есть текстовое поле, в которое я ввожу текст. Надо чтобы при выделении не захватывался последний пробел у выделенных слов. ХТМЛ тут не при чем.
Алогритм, как я представляю, следующий:
событие выделения -- проверить, является ли последний символ в выделении пробелом, если да, сдвинуть маркер конца выделения на 1 позицию назад.
Конечно, возможно это бредовая задача, но в работе очень напрягает все время вручную фиксить окончание выделения.
|
|
14.04.2010, 23:37
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
Сообщение от Roman Koff
|
Конечно, возможно это бредовая задача, но в работе очень напрягает все время вручную фиксить окончание выделения.
|
а проще: в скрипте делать trim()
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
|
|
15.04.2010, 10:57
|
|
Аспирант
|
|
Регистрация: 14.04.2010
Сообщений: 46
|
|
Я яваскрипт пару дней назад начал изучать. Вопрос очевиден, куда надо трим засунуть?
Финальная задача такая:
При выделении слов в поле редактора я могу обернуть их (через функции редактора) в тег. Но при стандартном выделении, ессно, захватывается еще и пробел, который там нафиг не нужен. Это очень бесить. Приходится при редактировании постоянно на клавиру переключатьсо.
Пример:
- "Южно-эфиопский грач увёл мышь за хобот на съезд ящериц." -- исходный текст в редакторе
- "Южно-эфиопский |грач увёл мышь за |хобот на съезд ящериц." -- вид текста при выделении
- "Южно-эфиопский <em>грач увёл мышь за </em>хобот на съезд ящериц." -- результат "обертки" в тег
Как должно бы быть:
- "Южно-эфиопский |грач увёл мышь за| хобот на съезд ящериц." -- вид текста при выделении
- "Южно-эфиопский <em>грач увёл мышь за</em> хобот на съезд ящериц." -- результат "обертки" в тег
Последний раз редактировалось Roman Koff, 15.04.2010 в 11:11.
|
|
15.04.2010, 11:15
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от Roman Koff
|
Я яваскрипт пару дней назад начал изучать
|
и сразу с выделениями связались, вот же не повезло вам, наверное возненавидете js после этого.
|
|
15.04.2010, 11:22
|
|
Аспирант
|
|
Регистрация: 14.04.2010
Сообщений: 46
|
|
Просто решил привентить Markitup к системе и тут наткнулся на эту фичу современных редакторов. Обратил внимание, что это правило распространяется на большинство редакторов, например ВОРД, НОТЕПАД ...
Интересно, на других платформах также? (щас нет возможности проверить).
На самом деле, я понял, что в данном случае -- это как с мельницами сражаться. Впринципе, всеравно все работает. Так для общего развития интересно, как можно решить данную задачу ...
|
|
15.04.2010, 11:28
|
|
Профессор
|
|
Регистрация: 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.
|
|
17.04.2010, 09:08
|
Новичок на форуме
|
|
Регистрация: 17.04.2010
Сообщений: 1
|
|
|
|
20.04.2010, 11:15
|
|
Аспирант
|
|
Регистрация: 14.04.2010
Сообщений: 46
|
|
Ну так и сделал, пример, если кому нужно будет:
function setTag(s, beg, end) {
var se = (s[s.length - 1] == ' ') ? ' ' : '';
return beg + Trim(s) + end + se;
}
Возник еще интересный момент, может кто сталкивался:
Если в редактор (испытывал на CKEditor и Markitup) вставить код спецсимвола, например: – « и т.п., то, после нескольких отправок (сохранений) код символа в исходнике превращается в фактическое значение (литерал).
Что хочется: 1. как прибить это "превращение" (т.е. чтобы в исходнике всегда был код, а не литерал); 2. как из JS вставлять в документ литерал по коду (принудительно делать рендеринг кода в литерал).
|
|
|
|