首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据用户的输入使搜索建议的部分粗体化?

如何根据用户的输入使搜索建议的部分粗体化?
EN

Stack Overflow用户
提问于 2021-05-05 15:25:53
回答 2查看 333关注 0票数 0

我一直在努力想出一个搜索建议。搜索建议将显示为用户类型。

您可以在链接- https://codesandbox.io/s/heuristic-shaw-rqp2k?file=/src/Autocomplete.js上找到代码。

我想要实现的是,出现的建议必须有一个黑体部分,用户键入。

示例-当用户在输入字段中输入"pa“时,我们得到两个建议:番木瓜和爪爪。

因此,这一建议应作为Papaya和Paw Paw。

我一直在尝试用替换的方法来达到这个目的,方法如下-

代码语言:javascript
复制
let optionName = optionName.replace(userInput,'<b>'+userInput+'</b>')

这段代码不工作,这是代码框链接上的第66行。

不使用替换方法的任何其他解决方案也是受欢迎的。

如果你还需要更多的信息,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-05 16:26:36

下面的代码成功了。请查收。

代码语言:javascript
复制
<li className={className} key={optionName} onClick={onClick}>
                {_getStyledSuggestion(optionName)}
</li>
代码语言:javascript
复制
const _getStyledSuggestion = (suggestion) => {
    if(!suggestion.toLowerCase().startsWith(userInput)) {
      return <span>{suggestion}</span>;
    }
    const userInputLength = userInput.length;
    return(
      <span>
        <span className="bold-span">{suggestion.substring(0, userInputLength)}</span>
        {suggestion.substring(userInputLength)}
      </span>
    );
  }

CSS:

代码语言:javascript
复制
.bold-span {
  font-weight: 700;
}

链接:https://codesandbox.io/s/angry-sea-97k4w?file=/src/Autocomplete.js:1495-1898

票数 0
EN

Stack Overflow用户

发布于 2021-05-05 15:53:51

您可以使用dangerouslySetInnerHTML。

dangerouslySetInnerHTML取代了在浏览器DOM中使用innerHTML

而不是:

代码语言:javascript
复制
  <li className={className} key={optionName} onClick={onClick}>
            {optionString}
  </li>

您可以使用:

代码语言:javascript
复制
<li className={className} key={optionName} onClick={onClick}>
                <span dangerouslySetInnerHTML={{__html: optionString}}  />
</li>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67404248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档