1

嗨,我正在使用下面的代码来填充我的自动完成列表。

    $('#input').autocomplete({ ajax_get : get_roles});

    function get_roles(v,cont,roleName){
            var roleName = roleName.value;
            roleName = roleName.toLowerCase();
            $.get('/da/roleautocomplete?roleName='+escape(roleName),{q:v},
                function(obj){
                  var res = [];
                  for(var i=0;i<obj.length;i++){
                    res.push({ id:i , value:obj[i]});
                  }
                  cont(res);
                },
                'json')
        }

我想在单击或从自动完成列表中选择一个项目时触发一个事件。我试过这个 -

$('#input').autocomplete({
     select:function(event, ui){
          // do your things here
      }, etc.

但无济于事。谁能帮我解决这个问题?

4

2 回答 2

2

我第一次尝试使用时遇到了类似的问题select:function(event,ui){ ... },但这绝对是要走的路。

关键是用于ui.item获取已单击或以其他方式选择的选项。我最初一直在使用eventthen this,但是对于单击和键选择来说,这些是不同的(从console.log一些角度来看),所以ui.item这就是你想要的。自动完成将设置为label: ..., value: ...,因此您最有可能使用的是ui.item.labelui.item.value

于 2012-05-03T12:49:01.823 回答
2

演示:http: //jsfiddle.net/DMDHC/

有用的阅读: http: //jqueryui.com/demos/autocomplete/(您可以阅读可用的选项和事件等)

代码:

$( "#search" ).autocomplete({
    source: function( req, resp ) {
        $.post( "/echo/json/", {
            json: '["Rambo", "Foobar", "This", "That", "Batman", "Hulk"]',
            delay: 1
        }, function(data) {
            resp( data );
        }, "JSON" );
    },
    select: function(event, ui) {
        var TABKEY = 9;
        this.value = ui.item.value;

        if (event.keyCode == TABKEY) { 
            event.preventDefault();
            this.value = this.value + " ";
            $('#search').focus();
        }

        return false;
    }
});
于 2012-05-03T12:39:28.330 回答