javascript - 如何使用 jQuery 将 html 文本框中的单词转换为 "tag"?

标签 javascript jquery html twitter-bootstrap twitter-bootstrap-3

我想编写一个奇特的搜索框。 每次当你输入一个词然后按下空格键时,这个词应该被转换成一个“标签”。对于“标签”,我的意思是: Tag from profile

您在此处看到的标签来 self 在 stackoverflow 中的配置文件设置。在这里,通过按“添加”按钮创建一个标签。但我希望这个词成为一个标签,而不是通过按下按钮,而是每次我按下空格键。

你有解决我的问题的方法吗?

我在谷歌中搜索了很长时间,但我没有找到任何东西!

感谢您的帮助!

:D

最佳答案

https://jsfiddle.net/geop94u7/

有点健壮,可以打包以在考虑一些因素(范围界定、多实例等)后重新使用。

首先,标记:

<div id="tags" class="cf"></div>
<input type="text" id="tagname" />

然后是 JS,防止重复,并允许删除已经选择的标签(然后可以重新选择)。

$('#tagname').keypress(function(e) {
    var $t = $(e.target),
        tmap = $t.data('tmap') || {},
        n = e.keyCode || e.which,
        val;
    $t.data('tmap', tmap);

    if (n === 32) {
        val = $.trim($t.val());
        if (val !== '' && tmap[val] === undefined) {
            tmap[val] = 1;
            $('#tags').append($('<div>').addClass('tag').html(val));
            $t.val('');
        }
    }
});

$('#tags').on('click', '.tag', function(e) {
    var $t = $(e.target);
    txt = $.trim($t.text());
    $t.remove();
    delete $('#tagname').data('tmap')[txt];
});

最后,一些带有删除指示器的常规 CSS:

#tags {
    width: 100%;
    padding: 10px;
    float: none;
    clear: both;
}

.tag {
    float: left;
    margin: 5px;
    padding: 5px;
    background: #efefef;
    cursor: pointer;
    border: 1px solid #e0e0e0;
}

.tag::after {
    content: '\2612';
    float: right;
    display: block;
    margin: -2px 0 0 10px;
}

如果不需要从头开始重建,您最好使用强大的插件(有很多)。

关于javascript - 如何使用 jQuery 将 html 文本框中的单词转换为 "tag"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065987/

相关文章:

html - CSS忽略子元素但不忽略文本

jQuery 通过鼠标指针追踪 div 的名称

Javascript:如何创建没有文本内容的按钮元素

javascript - Jquery $.ajax 导致浏览器卡住一秒钟

javascript - d3 : will selection. 样式 ('font-size' ) 总是以 px 为单位返回值?

javascript - 借助 :hover rule instead of a class selector 的 gulp-spritesmith 属性生成

javascript - 查找链接并使其可点击

jquery - 为什么 Jquery 不适用于 asp.net 中 LinkBut​​ton 的 CssClass 属性?

javascript - 我可以使用 CSS 来更改此 HTML 结构吗?

jquery - 如何制作平滑的 fadeIn() jQuery