Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是什么触发了;标签;Stackoverflow的部分?_Javascript_Jquery_Jquery Ui - Fatal编程技术网

Javascript 是什么触发了;标签;Stackoverflow的部分?

Javascript 是什么触发了;标签;Stackoverflow的部分?,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我已经找了好几个小时了。在“标记”“部分如何使蓝色框显示在下面 我不认为他们正在使用keyup事件触发器,因为蓝色框并没有在每次按键时更新 您可以通过转到并键入以下内容来测试: “aadfadasdfasdfasdfasdfasdfasfasdfsaf” 键入时,您会注意到蓝色框“aadfadasdfasdfasdfasdfasdfasfasdfsaf”仅在键入几秒钟后出现。不在期间。他们可能会调用setTimeout和cleartimout在最后一次keyup事件后1秒运行代码。这只是一个例子

我已经找了好几个小时了。在“标记”“部分如何使蓝色框显示在下面

我不认为他们正在使用keyup事件触发器,因为蓝色框并没有在每次按键时更新

您可以通过转到并键入以下内容来测试:

aadfadasdfasdfasdfasdfasdfasfasdfsaf


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

他们可能会调用
setTimeout
cleartimout
在最后一次
keyup
事件后1秒运行代码。

这只是一个例子。实现这一点的方法有很多

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

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

如果您想在自己的网站上实现类似的功能,我建议您研究jQuery插件来实现这一点,因为有很多免费提供的插件


编辑:如您所述,触发器可能是一个keyup事件。但是,在显示可能的自动完成列表之前,触发器可能会使用
setTimeout()
等待一秒钟左右<代码>clearTimeout()用于在延迟期间按下另一个键以防止多次调用。

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


无论如何,在该文件中,有几个函数可能会引起您的兴趣:
StackExchange.tagPreferences
及其子函数,
initTagRenderer
StackExchange.inlineEditing
。我认为最后一个函数是导致您所指的特定延迟的函数,但这很难说。

我使用的是jQuery UI自动完成插件。我熟悉其他类似的插件。但这不是重点。我的问题更多的是关于这些事件是如何被触发的。@Christian Fazzini:Editing accordinglyThis不(IMHO)属于meta。我怀疑是这样的。您认为他们将超时设置为多长时间?只是为了更清楚地理解这一点。。在每个keyup事件上,都会设置一个setTimeout计时器?或者每次只有一个计时器被重置?你认为哪种方法更有效?@Christian:每次按键时,清除前一个计时器,然后设置一个新的1秒计时器。