强制jQuery UI自动完成移动?

时间:2010-10-13 17:00:02

标签: jquery jquery-ui jquery-ui-autocomplete

我在我的网站上使用jQuery UI中的自动完成功能,并且工作正常,但我正在重新设计系统,因此我需要进行一次更改。目前,自动完成功能将在输入的底部打开。但是,我无法使用jQuery或CSS强制它进入自定义位置。

我试过这个:

    $('#search').autocomplete('widget').css({
        'margin-left': -200
        //or
        left: 200
    });

我也尝试过添加!重要的规则,但没有影响。

我还尝试将css添加到.ui-autocomplete,没有任何结果。

似乎当框打开时,它会覆盖所有这些更改。对此有何想法?我真的需要一个解决方案。

谢谢, Martti Laine

3 个答案:

答案 0 :(得分:1)

您可以为open()提供可选功能:

示例:

 $("#search").autocomplete({ 
                            open: function(event, ui) 
                                  {$(this).next().css('left',
                                    function(index, value) {return 200+parseInt(value)});
                                  }
    });

...将位置设置为通常位置的左侧200px

答案 1 :(得分:1)

我的自动完成功能会在DOM结束时打开。根本没有关闭触发器输入...... 我正在考虑查看触发输入的索引,然后找到自动完成的相应索引,但我不知道为什么 - 它对我来说似乎不够强大。

答案 2 :(得分:0)

像NeoSwf一样,我发现我的自动完成功能被插入到DOM的底部附近。取决于$(this).next(),发现它很脆弱。我建议使用更具体的内容,例如this,而不是'ul.ui-autocomplete'。这是我的版本的CoffeeScript:

jQuery ->
  $('#search').autocomplete
    open: (event, ui) ->
      $('ul.ui-autocomplete').css('left', (index, value) ->
        return 200 + parseInt(value))