У меня есть текстовое поле страницы, которое пользователь может вводить. По мере того, как пользователь печатает, я хочу выделять фрагменты текста. Проще говоря, я сейчас пытаюсь выделить все гласные.
Первая часть кода от этот вопрос :
$('[contenteditable]').live('focus', function() {
var $this = $(this);
$this.data('before', $this.html());
return $this;
}).live('blur keyup paste', function() {
var $this = $(this);
if ($this.data('before') !== $this.html()) {
$this.data('before', $this.html());
$this.trigger('change');
}
return $this;
});
Из которого я могу написать это :
var magicRegex = /[aeiou]/gi;
$('#message').change(function() {
$(this).find('br').replaceWith('\n');
var message = $(this).text();
message = message.replace(magicRegex , '<mark>$&</mark>');
message = message.replace(/\n/gi, '<br />');
$(this).html(message);
}).change();
Этот код выделяет гласные как пользовательские. Однако при этом фокус на поле теряется при каждом обновлении подсветки, и пользователь должен щелкнуть снова, чтобы ввести другой символ.
Как я могу это исправить?