如何在使用自动完成功能时触发按键()

问题描述:

我想将单词的第一个字母改为大写。所以,我在keyup()函数上写了一些代码。如何在使用自动完成功能时触发按键()

每当我在文本字段中键入内容时,Word的第一个字母将变为大写。

我也用autocomplete()函数。问题是,每当我从自动完成下拉菜单中选择一个单词时,它的第一个字母不会变为大写,最后一个文本框也会自动聚焦。

仅供参考:在自动完成选择后,我触发了keyup()函数。

的jsfiddle:http://jsfiddle.net/8ke04mgs/5/

+0

为什么你需要'keyup()'事件? ''autocomplete()''已经使用'keypress()',它工作正常吗? – 2014-09-19 09:08:41

+0

你说过:“每当我从自动完成下拉菜单中选择一个单词时,它的第一个字母不会变为大写,最后一个文本框也会自动聚焦。”但是我可以在你的小提琴中看到当你输入自动完成文本框时你的第一个字母变成了大写字母......并且最后一个文本是从第二个字符开始显示的。那么你的问题实际上是什么。这篇文章和你的小提琴是不同的。 – 2014-09-19 09:10:51

+0

不,只有相同。每当我在文本框中键入时,它工作正常。但在打字时,一些建议将在下拉菜单中显示。从下拉列表中选择任何一个建议后,都不会更改为大写。我解释清楚了吗? – Balaji 2014-09-19 09:18:19

您可以在文本框使用更改事件

$(document).on('change', 'inputBox', function() { 
    // Does some stuff and logs the event to the console 
}); 

这将解决自动完成问题

您当前的做事方式会如果工作完美的选择方法,你提供给自动完成库在被更新后被调用。 但事实并非如此,它之前被调用,所以它利用的值是旧值,并立即由自动完成代替。

正如@Alok指出的那样,您可以使用“更改”事件等待一段时间。

为了避免写出你的事件处理了两次,记得.on()可以采取多个事件,所以我只是把它在KEYUP和改变,像这样

$('#element').on('keyup change', function() { 
    ... 
}); 

但我认为在现代浏览器“变”应该够了。