我有一个隐藏的自动填充输入字段,直到我点击一个项目。为了避免让用户点击输入框,我想使用.focus()
。
单独使用此功能。问题是,当我开始输入时,自动完成功能无效。所以我必须触发autocompelte函数。我使用的功能是:
self.find('.search-city').on('focus', function(){
$(this).acCity(); // Custom function for autocomplete
});
问题在于,一旦我使用function()
,它就会失去焦点。 You can see the fiddle here。
如何解决这个问题?
答案 0 :(得分:2)
您正在注册焦点事件处理程序,而不是调用focus()
来设置焦点在元素上。
假设你想要它们更像是http://jsfiddle.net/TrueBlueAussie/totgn883/3:
$('.container').on('click', function(){
var self = $(this);
self.find('.city').hide();
self.find('.input-wrapper').addClass('show');
self.find('.search-city').focus(); // Works fine
});
// Listen for a focus event - does not cause focus to occur
$('.search-city').focus( function(){
// Does not work
console.log("I am focused");
});
注意:按照下面的评论,您似乎认为$('.search-city').focus( function(){
会引发焦点事件。它不是。它注册了一个在元素实际聚焦时要调用的函数。
答案 1 :(得分:1)
因为当你使用回调函数语法时:
.focus(function () {
// Does not work
});
你bind an event,而不是解雇它。
在您的情况下,您只需通过电话.focus()
(或.trigger('focus')
)触发焦点事件。