2008-09-20 5 views
2

Мне нужно реализовать автоматическую капитализацию внутри элемента управления Telerik RadEditor на странице ASPX как пользовательские типы.Как реализовать автоматическую капитализацию в JavaScript/HTML

Это может быть специфическое для IE решение (IE6 +).

В настоящее время я фиксирую каждое нажатие клавиши (вниз/вверх) по мере того, как пользователь создает для поддержки отдельную функцию, называемую «макросами», которые по сути являются короткими ключевыми словами, которые расширяются в форматированный текст. то есть макрос «so» может автоматически расширяться при попадании пробела в «stackoverflow».

У меня есть доступ к информации о ключевом коде, а также я использую методы TextRange для выбора слова («так») и расширения его на «stackoverflow». Таким образом, у меня есть некоторое подобие контекста.

Однако мне нужно проверить этот контекст, чтобы узнать, следует ли автозапускать. Это также должно работать независимо от того, задействован ли макрос.

Поскольку я отслеживаю нажатия клавиш для макросов, должен ли я просто следить за пунктуацией (это больше, чем просто периоды, которые сигнализируют прописную букву) и автоматически закрывать следующую букву, или я должен использовать TextRange и анализировать контекст?

+1

Другое, чем в начале предложения, когда нужно заглавные буквы? У вас есть предопределенный список правильных существительных или сокращений? – Liam 2008-09-20 08:13:31

ответ

4

Я не уверен, если это то, что вы пытаетесь сделать, но вот функция (reference), чтобы преобразовать заданную строку заголовка дела:

function toTitleCase(str) { 
    return str.replace(/([\w&`'‘’"“[email protected]:\/\{\(\[<>_]+-? *)/g, function(match, p1, index, title){ // ' fix syntax highlighting 
     if (index > 0 && title.charAt(index - 2) != ":" && 
      match.search(/^(a(nd?|s|t)?|b(ut|y)|en|for|i[fn]|o[fnr]|t(he|o)|vs?\.?|via)[ -]/i) > -1) 
      return match.toLowerCase(); 
     if (title.substring(index - 1, index + 1).search(/['"_{([]/) > -1) 
      return match.charAt(0) + match.charAt(1).toUpperCase() + match.substr(2); 
     if (match.substr(1).search(/[A-Z]+|&|[\w]+[._][\w]+/) > -1 || 
      title.substring(index - 1, index + 1).search(/[\])}]/) > -1) 
      return match; 
     return match.charAt(0).toUpperCase() + match.substr(1); 
    }); 
} 
4

Вы пытались применить стиль CSS text-transform к своим элементам управления?

0

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

В любой длины, вот функция Название корпуса (реализация Java вдохновлен John Gruber блоггинг автоматизации), которые могут стимулировать идеи, когда речь идет об обработке фактического кода корпуса:

http://individed.com/code/to-title-case/

1

Иногда это не значит, что это правильный ответ на проблему с кодированием.

Я действительно НЕ сделал бы этого, если не чувствую, что вы можете написать сценарий, чтобы правильно установить случай в следующем предложении, если вы должны сначала преобразовать его в нижний регистр и передать его в скрипт.

Жан-Люк «Король» О'Брайен Мак-Хенри ван д'Араф IIV (PhD, OBE) оставил свой Macintosh в Макдональде со своими друзьями MacIntosh и MacDonald. Иисус дал свой Atari ST на AT & T's «СПИД для СПИДа» на St George's St, с Ван Халеном в фургоне Ван Генри, исполняющим The Tempest.

Вы настроились на падение, пытаясь создать парсер естественного языка. Вы никогда не сможете это сделать, как и пользователь. В лучшем случае вы можете сделать приближение и дать пользователю возможность редактировать и принудительно корректировать, когда вы ошибаетесь. Но часто в таких случаях редактирование - это больше работы, чем просто делать это вручную и в первую очередь.

Сказанное, если у вас есть пространство и мощность для хранения и поиска большого массива n-граммов подходящих заглавных слов, вы, по крайней мере, сможете иметь дикий удар в наиболее вероятном случае.