什么是触发Stackoverflow的“标签”部分?

时间:2011-08-01 16:52:59

标签: javascript jquery jquery-ui

一直在找时间。在https://stackoverflow.com/questions/ask,“标记”部分如何使蓝框显示在下方?

我认为他们没有使用keyup事件触发器,因为每个按键都没有更新蓝框。

您可以转到https://stackoverflow.com/questions/ask并输入:

进行测试

“的 aadfadasdfasdfasdfasdfasfasdfsaf

在您键入时,您会注意到蓝色框“aadfadasdfasdfasdfasdfasfasdfsaf”只会在输入后几秒钟出现。不在期间。

3 个答案:

答案 0 :(得分:2)

他们可能会在setTimeout事件发生后1秒钟调用clearTimeoutkeyup来运行他们的代码。

答案 1 :(得分:1)

这只是autocomplete的一个案例。有很多方法可以实现这一目标。

一种方法是在客户端将单词列表存储为自动完成。这是非常快的,不会有任何延迟(除非你编程一个)。

另一种方法是对服务器进行AJAX调用,并让它返回一个自动完成单词列表。这就是SO的做法。由于您不希望每次用户输入字母时都进行ajax调用,因此会实施延迟以节省带宽并提高性能。

如果你想在你自己的网站上实现类似的功能,我建议你研究jQuery插件来实现这个功能,因为那里有许多免费提供的功能。

编辑:触发器可能是你提到的键盘事件。但是,在显示可能的自动完成列表之前,触发器可能会使用setTimeout()等待一秒左右。如果在延迟期间按下了另一个键以防止进行多次调用,则使用clearTimeout()

答案 2 :(得分:0)

使用Firebug或其他web inspector查看源代码。您会看到有一个名为full.js的文件。它被最小化,但您可以使用各种在线工具扩展代码;我将非常懒惰的方法复制/粘贴到jsfiddle的“javascript”框中并点击“整洁”。我确信有更好(更快)的方法。

无论如何,在该文件中,您可能会感兴趣的是一些功能:StackExchange.tagPreferences及其子功能,initTagRendererStackExchange.inlineEditing。我认为最后一个功能是引起你所指的特定延迟的功能,但很难说。