Я пытаюсь создать выделенное синтаксисом поле поиска, где некоторые элементы являются конкретным цветом, полужирным шрифтом, подчеркиванием и т. Д., Когда я печатаю. Когда я печатаю, я хотел бы, чтобы слово in
стало полужирным. Это работает с тем, что у меня есть, но когда набирается in
, курсор переходит в начало div, и вы не можете вводить ничего после слова in
. Что я могу сделать, чтобы исправить это? Вы можете увидеть jsfiddle here.div форма поиска с форматированием
JavaScript:
$(document).on("keyup", "#q", function(){
var val = $(this).text();
val = val.replace(/\sin\s/ig, " <b>in</b> ");
$(this).html(val);
});
HTML-
<div id="q" name="q" class="form-control input-lg" contenteditable="true"></div>
Off верхней части моей головы, первый я попытался бы получить позицию курсора в начале функции и поместить ее туда в конце функции. – blex
См. ['Window.getSelection'] (https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection) - в частности [' .getRangeAt'] (https: //developer.mozilla .org/en-US/docs/Web/API/Selection/getRangeAt) и ['.addRange'] (https://developer.mozilla.org/en-US/docs/Web/API/Selection/addRange). – Toothbrush
Я нашел это для получения позиции: http://stackoverflow.com/a/3976125/1778465, и я нашел это для установки его http://stackoverflow.com/a/6249440/1778465, второй на меня дает мне это ошибка: 'Uncaught IndexSizeError: не удалось выполнить 'setStart' в 'Range': смещение 12 больше или равно длине узла (9).' –