【问题标题】:Hashtag client side implementation using jquery & javascript使用 jquery 和 javascript 的 Hashtag 客户端实现
【发布时间】:2017-05-10 22:56:46
【问题描述】:

#input {
    -moz-appearance: textfield-multiline;
    -webkit-appearance: textarea;
    border: 1px solid gray;
    font: medium -moz-fixed;
    font: -webkit-small-control;
    height: 28px;
    overflow: auto;
    padding: 2px;
    resize: both;
    width: 400px;
}
<div id="input" placeholder="testing" contenteditable>listening music #music</div>

我正在实施主题标签功能(例如:- #music、#dance)。

如果用户输入“#”字符,我想点击搜索 Api。

例如: 用户更新状态“听音乐#music #dance let's rock”

这里“听音乐,让我们摇滚”是普通文本,“#music”、“#dance”是标签。

每当用户在“听音乐”后输入“#m”时,我需要点击“/search?q=m”之类的 api

var searchData = ["music", "mango", "marks", "moon"]

用户可以选择其中一项建议,并且空格会自动出现在标签之后。

每当用户在“#music”之后输入“#d”时,我需要像“/search?q=d”一样点击api

var searchData = ["dance", "danger", "dad"]

用户可以选择其中一项建议,并且空格会自动出现在标签之后。

“let's rock”是普通文本。

区分“hashtag”的颜色并仅在用户输入“#”时进行搜索

【问题讨论】:

  • 那有什么问题呢?
  • 如果你看到,我搜索了“#m”,如果我选择了“音乐”,在文本框中的值就像“#mmusic”(“#m”+“music”),我想要突出主题标签词。
  • 如果你看到 twitter,我需要像“Tweet box”这样的功能

标签: javascript jquery json ajax hashtag


【解决方案1】:

我认为这对你有用

var inputData = "listening music #music #dance let's rock";
var arrayData = inputData.split(" ");

arrayData.forEach(function(entry) {
     if(entry.startsWith(("#music") || ("#etc"))){
     // hit your api
     }
});

【讨论】:

  • 用户输入“听音乐”并且用户输入“#m”、“#mu”等,一旦用户选择了我希望“#m”或“#mu”等成为的任何建议“#selectedItem”,对我来说就像“#mselectedItem”或“#muselectedItem”,该标签应该是不同的颜色或任何其他(css)。
【解决方案2】:

您可以将keyup 事件绑定到您的输入以检查主题标签的起始词。找到匹配项后,您调用 AJAX。像这样:

var ajax;

$('#input').keyup(function() {

    var tags = $(this).val().split(' ');
    var lastTag = tags.pop();

    if (/#\S+\b/.test(lastTag)) {
        // abort previous ajax if still running
        if (ajax && ajax.abort && ajax.readyState !== 4)
            ajax.abort();

        // hit your search api
        ajax = $.getJson('/search', { q: lastTag })
               .done(function (data) {
                   // manage your response data here
                   // show suggestions and handle picking one
               });
    }
});

编辑:完全重做逻辑,更简单,更紧凑

【讨论】:

  • 嗨 rabelloo,感谢您的回复,我已经尝试过您的代码,但“ajax”总是未定义,“currentHashtagIndex”的首次值总是“-1”。你能重新检查你的脚本并更新它吗?
  • 是的,我的错误,在编写代码时重构了代码,并将变量留在了keypress 事件范围内。 ajax 总是未定义的,因为由于前面的错误,代码从未设法到达 $.getJson。请尝试更新后的代码
  • 我也刚刚意识到你不需要searching 变量,你可以使用currentHashtagIndex。更新代码以反映这一点
  • 嗨 Rabelloo,谢谢,我也检查了更新的代码,'index' 和 'query parameter' 值不正确。您可以查看此链接https://jsfiddle.net/5a9c4f87/2/
  • https://jsfiddle.net/DevendraTata/5a9c4f87/5/我这里更新了代码,忽略之前的评论链接。 “索引”和“查询参数”值不正确。
猜你喜欢
  • 2012-07-13
  • 2017-09-30
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 2017-06-02
  • 2012-12-10
相关资源
最近更新 更多