Javascript 如何在按下键事件后突出显示文本?

Javascript 如何在按下键事件后突出显示文本?,javascript,jquery,Javascript,Jquery,我试图突出显示搜索表单中#字符后面的所有文本 我想实现一个效果,文本高亮显示,直到按下空格键 // Detects hashtag keypress and highlights word $('#nav-search').on('keydown',function(e){ // console.log(e.which) // 163 == '#' if(e.which==163){ console.log('# Pressed') } }); 我正在使用keyd

我试图突出显示搜索表单中
#
字符后面的所有文本

我想实现一个效果,文本高亮显示,直到按下空格键

// Detects hashtag keypress and highlights word
$('#nav-search').on('keydown',function(e){

  // console.log(e.which)
  // 163 == '#'

  if(e.which==163){
    console.log('# Pressed')
  }

});
我正在使用
keydown
事件检测
#
符号作为输入

下面显示了使用粗体作为突出显示的示例效果


e、 g.“这是一个#测试#搜索查询”

对此,您应该使用
替换
。将此添加到您的
keydown
处理程序:

$(this).val($(this).val().replace(/(?!<strong>)(#.*?)\s/g, "<strong>$1</strong>"));
$(this.val)($(this.val().replace(/(?!)(#.*)\s/g,“$1”);

正则表达式匹配并捕获一个hashtag(或octothorp)以及它后面的所有非空白字符,然后将它们封装在
标记中

它不会在每次按键事件中都添加一对额外的标签吗?哇,是的@NinaLisitsinskaya。谢谢。因此,是的,它需要在空白处封装,而不是下面的“#”,这将正确地用HTML替换文本,但更重要的是,什么是
#nav search
<代码>值中不能包含HTML。或者至少,它不会呈现为HTML。是的,它是输入。我所追求的总体效果是,在“#”之后的任何东西都将被放入引导药丸中。我试图通过突出显示文本来开始这个过程。什么是
#导航搜索
?如果不使用变通方法,输入不能同时包含粗体和非粗体文本。这是一个输入字段。