0

我正在使用 jQuery on 方法进行搜索并用搜索结果填充我的 div。我有一个输入文本框,它是 div 内容的一部分。我正在使用 keyup 事件来读取输入的文本,然后使用 ajax 调用我的服务器并进行搜索。当我返回结果时,我用迄今为止输入的文本填充文本框。我返回的其余内容是搜索结果。这一切都很好。

然而,我想要将焦点放在我的输入文本框中,并将光标放在输入的最后一个字符之后,以便用户可以继续输入,并且每次击键时搜索结果都会不断变化。我想有一些方法可以用 jQuery 和 JavaScript 做到这一点,但我不知道怎么做。

编辑:也许我不清楚,但我在这个问题上找到了答案:jQuery - Place cursor in input field when link clicked

基本上我需要做的就是:

var searchBox = $("#search");

searchBox.focus();

searchBox[0].selectionStart = searchBox[0].selectionEnd = searchBox.val().length;

4

2 回答 2

0

如果我理解正确,您需要做的事情少而不是多。

你说,“当我返回结果时,我用迄今为止输入的文本填充文本框”。

为什么?到目前为止输入的文本已经在文本框中,因此不需要替换。通过不替换文本,用户将能够继续打字。

还有一个你可能没有考虑过的其他方面......

毫无疑问,用户将能够输出 ajax 响应,因此您应该采取措施在发出新的 ajax 请求之前中止未完成的 ajax 请求。这通过以方法的形式返回的 jQuery jqXHR 对象$.ajax()(及其速记版本)变得简单abort()

中止失败可能会导致针对当前文本显示错误的搜索结果集,因为不能保证 ajax 响应按照发出请求的顺序返回。

于 2013-06-13T22:01:48.570 回答
0

我认为您可以使用 select2 插件。看看这里,也许它可以帮助你:http: //ivaynberg.github.io/select2/

于 2013-06-13T21:13:52.387 回答