javascript - 像在 twitter 上一样用 svelte 打字时给 #hashtags 上色

标签 javascript css svelte

我正在起诉 svelte,这里的 react 性是关键,我想在文本中输入 #hashtags 时进行着色, 代码:

<script> 
let tweet = "";
        function blueColor() {
    tweet = tweet.replace(/<a\b[^>]*>|\B(#[^\W_][\w-]*)/gi, function (m, p) {
        return p ? '<span class="hash_tag">' + m + '</span>' : m;
    });
}
</script>
                               <input
                                    id="message"
                                    rows="4"
                                    bind:value={ tweet }
                                    on:input={ blueColor }
                                    class="block p-2.5 w-full 
                                    rounded-lg border text-white focus:outline-none focus:ring
                                    bg-gray-700 border-gray-600 placeholder-gray-400
                                    hover:border-blue-600"
                                    placeholder="What's happening..."
                                    maxlength="200"
                                />

如您所见,我可以在打字时替换它,但我将其作为输出:

as <span class="hash_tag">#hashtag</span>

你有什么快速的解决办法吗?

最佳答案

Do you have any quick solution

对此没有快速的解决方案。获取样式文本输入的唯一方法是使用 contenteditable就交互逻辑而言,它往往非常复杂。

您最好的选择是寻找一个已经可以处理所有必需品的库(处理复制/粘贴、删除不需要的输入和格式设置等)。

如果您想自己实现逻辑,可以使用 contenteditable="plaintext-only" 立即限制输入。不过,正确同步状态、删除/添加标签所需的元素而不干扰用户输入可能仍然很复杂。

关于javascript - 像在 twitter 上一样用 svelte 打字时给 #hashtags 上色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73649010/

相关文章:

javascript - 无法在组件内部使用 [routerLink]

javascript - jQuery 的克隆元素在被删除并附加到容器两次后丢失点击事件

javascript - 使用 jQuery 的随机 'email format' 文本

html - 如何防止使用 CSS 对 DOM 上的特定单词组进行自动换行?

html - 如何定位带有粘性的div?

javascript - Svelte 中的原生 JavaScript

javascript - 在scrollTop上应用Jquery效果时遇到问题

php - 如何在子主题中使用 html

vaadin - 带有 vaadin 的 Web 组件和带有 svelte 的汇总 : Primary button ignores theme attribute

svelte - 如何更改 Svelte Material UI (@SMUI) slider 标签中的背景?