javascript - 使用 Jquery 实现标签

标签 javascript jquery css

基本上我想做的是,每当我写任何以 # 开头的内容时,标记字符串的颜色应该立即更改为其他颜色,比如蓝色。当我按空格结束字符串时,颜色应该变回黑色。我在 contenteditable div 上尝试了这样的逻辑:

    if (# is pressed) 
    hashtagging = true
    append "<span>" to div

    if (space is pressed and hashtagging is true) 
    hashtagging = false
    append "</span>" to div

这没有按预期工作。

最佳答案

应该这样做:

$(function() {

    var hashtags = false;

    $(document).on('keydown', '#myInputField', function (e) {        
        arrow = {
            hashtag: 51,
            space: 32
        };

        var input_field = $(this);
        switch (e.which) {
            case arrow.hashtag:
                input_field.val(input_field.val() + "<span class='highlight'>");
                hashtags = true;
                break;
            case arrow.space:
                if(hashtags) {
                    input_field.val(input_field.val() + "</span>");
                    hashtags = false;
                }
                break;
        }

    });

});

现在这段代码会检查 keydown 是否按下了主题标签或空格,并添加了一个带有样式类的跨度。检查 keydown 而不是 keyup 的原因是在将实际输入添加到文本字段之前添加标签。我使用文本字段作为输入,但可以根据需要对其进行修改。

关于javascript - 使用 Jquery 实现标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154736/

相关文章:

html - 降低html文档的高度

html - 如何在 Angular 输入中添加垫选择

javascript - 如何使用索引检索 JSON 文本?

asp.net - jquery ajax 方法中的无效 JSON 原语 : error when get the post values in asp.net

适用于 iPad 的 Javascript IDE

jquery - 使用 knockout 隐藏外部点击时的div?

jquery - 主体的wrapInner()直到指定元素

javascript - "Floating"带有 HTML/CSS/JavaScript/whatever 的注释

javascript - selenium 和 Protractor 崩溃,无法截图

javascript - angular2(typescript) 从另一个文件导出变量