使用焦点时输入失去焦点(function(){})

时间:2014-10-29 10:39:47

标签: jquery autocomplete

我有一个隐藏的自动填充输入字段,直到我点击一个项目。为了避免让用户点击输入框,我想使用.focus()

单独使用此功能。问题是,当我开始输入时,自动完成功能无效。所以我必须触发autocompelte函数。我使用的功能是:

self.find('.search-city').on('focus', function(){
    $(this).acCity(); // Custom function for autocomplete
});

问题在于,一旦我使用function(),它就会失去焦点。 You can see the fiddle here

如何解决这个问题?

2 个答案:

答案 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'))触发焦点事件。