jQuery UI Autocomplete

问题描述:

我使用的是jQuery UI的自动补全插件,除了这个事实,当用户点击时,他们希望我分配给“select:”方法的值在该值之前触发的领域改变了。因此,如果我在输入字段中输入“Foo”,然后单击“Foo Bar”的自动完成匹配,则该函数将检测到的值作为键入的值(本例中为“Foo”),而不是从自动填充中选择的值名单。一旦函数触发(在这种情况下,我只有一个警告框弹出w/this.value)输入字段的值设置为通过自动完成列表选择的值。如果用户选择带键盘的选项(箭头键 - >选项卡),则仅在使用鼠标时才会出现而不是jQuery UI Autocomplete

$(function() 
    { 
    var aEmps = 
    [ 
<?php 
echo $sEmps; 
?>  
    ]; 

    $("#slast").bind("keydown", function(event) { 
     if (event.keyCode === $.ui.keyCode.TAB && 
      $(this).data("autocomplete").menu.active) 
      { event.preventDefault(); } 
    }) 
    .autocomplete({ 
     source: aEmps, 
     select: function(event, ui) 
     { 
     var aName = $(this).val(); 
     alert(aName); 
     } 
    }) 
    }); 

由于大多数用户都会有这样使用他们的鼠标交互我必须找到一种方式来获得射击“选择:”之前的设定值的功能。我相信我可以通过在自动完成之前在语句中添加一个条件来适应这一点,但我需要一些帮助来找到正确的语法。

尝试了多种方法后,我发现通过简单地将回调函数绑定到关闭事件工作得很好。我添加了一些错误处理来捕获未从列表中选择的值,并且我关闭并正在运行!

下面是更新后的代码:

$(function() 
    { 
    var aEmps = 
    [ 
<?php 
echo $sEmps; 
?>  
    ]; 

    $("#slast").bind("keydown", function(event) { 
     if (event.keyCode === $.ui.keyCode.TAB && 
      $(this).data("autocomplete").menu.active) 
      { event.preventDefault();} 
    }) 
    .autocomplete({ 
     source: aEmps, 
     close: function(event, ui) 
     { 
     alert(this.value); 
     }  
    }) 
    }); 

看看文档,它看起来像选择事件被触发作为选择正在更新,而不是选择更新后。尝试使用更改事件而不是选择,看看是否可以解决您的问题。

+0

不幸的是,更改事件是导致相反的问题在这个意义上,它不会火,直到用户离开赛场,我需要它立即发生时,项被选中。我将回调函数绑定到关闭事件上,添加了一些错误处理逻辑(如果没有输入),并激活我关闭并运行! – 2011-03-25 22:43:38