jQuery:如何突出显示输入框中的文本?

Posted

技术标签:

【中文标题】jQuery:如何突出显示输入框中的文本?【英文标题】:jQuery: How to highlight text within an input box? 【发布时间】:2012-08-21 04:48:26 【问题描述】:

我想知道如何突出显示输入框中的某些文本;简单的例子,假设我想在输入时突出显示以“@”开头的所有术语。

所有术语均从远程自动完成建议列表中检索。

我面临的问题是这个输入框,因为我无法在文本周围添加 html 标签,因此无法根据这些特定术语制作 css...

感谢您的帮助!

干杯!

【问题讨论】:

您需要查看contentEditable,为您的输入创建一个可编辑区域,将允许您以您描述的方式突出显示文本。或者你可以使用 tinyMCE,但是在两个 contentEditable 和 editable div 之间会更容易学习如何使用。 我在所有可能的查询中搜索了它,甚至查看了 *** 在发布问题时如何进行标签选择,但老实说,我无法弄清楚如何只突出显示已检索到的术语(他们全部以“@”开头)。它实际上类似于 FB 功能,当您键入“@[username]”时,该值会在选择后突出显示。 【参考方案1】:

我希望,这就是你所追求的。

先看看highlightTextarea。由Julien L制作

有了它,您可以执行以下操作:

$("textarea").highlightTextarea(
    words: ["\\B@\\w+"],
    color: "lightblue",
    id: "mark"
);

正则表达式 \\B@\\w+ 在非单词边界 (\B) 处断言位置,后跟 @ 并匹配 \w 下的所有内容。

DEMO

【讨论】:

可能在“@”前添加[ \t],否则包含“@”的单词将被突出显示! @11684 我猜你的意思是\s 而不是\t\t 是一个制表符。 作为空间为我工作,看看我的答案! +1!很好的答案!你能看看我的吗?你知道出了什么问题吗? DEMO 链接上的 404【参考方案2】:

您可以在 jQuery 中使用.select 方法...这是一个简单的示例。

$(input).focus(function()  
  this.select(); 
);

$('input').click(function() 
 // the select() function on the DOM element will do what you want
 this.select();
);

FIDDLE DEMO

【讨论】:

感谢@Vins 的回答,但不是因为被选中,我以后可以突出显示它,对吧? 我认为你误解了这个问题,'highlight' 有两种含义。 .select() 不是 jQuery 方法,而是原生 javascript。证明在你的例子中。 jQuery 回调处理程序中的thisevent.target 对象,它只不过是一个普通的DOM 元素对象。在这里,目标是一个被点击的input 元素。 this.select() 是 DOM API method ,而不是 jQuery 函数。

以上是关于jQuery:如何突出显示输入框中的文本?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 插件 DataTables:如何突出显示当前搜索文本?

在 Blazor 中的文本或数字框中自动突出显示

代码并不总是突出显示富文本框中的选定文本

JQuery DatePicker,如何突出显示当前输入的日期?

如何在 C# Winforms 程序的文本框中突出显示文本?

如何在 Visual Basic 2012 中突出显示 Hashtag