我有一个用户可以输入的页面文本框。当用户键入时,我想突出显示文本的各个部分。为了简单起见,我只是想突出显示所有的元音。如何在用户输入时突出显示文本部分?
代码的第一部分是从this question:
$('[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;
});
从中我然后可以写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();
此代码突出元音作为用户类型。但是,这样做时,每次突出显示更新时,该字段的焦点都会丢失,并且用户必须再次单击才能键入另一个字符。
我该如何解决这个问题?
尝试添加$('#this')。focus();消息更新后保持重点。 –
你的意思是'$(this).focus()'?我试过这一开始,但它没有奏效。 – Eric
对不起,深夜在这里哈哈。听起来怪怪的。对不起,我没有好的解释。希望你能找到答案。 :) –