jquery autocomplete在选择选项时不返回值

时间:2013-06-12 08:45:17

标签: jquery function return-value jquery-autocomplete

我有一个问题要问你......

我有一个自动完成一些文本的功能,在选择我想从函数返回2值...这是我的代码:

function autoComp(field, srt, file, act) {
      $( field ).autocomplete({
            minLength: srt,
            source: function( request, response ) {
                  $.ajax({
                        url: file,
                        type: 'post',
                        dataType: "json",         
                        data: {'azione':act, 'txt':request.term},
                        success: function(data) {
                              response( $.map( data.result, function( item ) {
                                    return { 
                                          label: item.text, 
                                          value: item.text,
                                          id:  item.id
                                    }
                              }));
                        }
                  });
            },
            select: function( event, ui ) { 
                  var obj = {};
                  obj[0] = ui.item.id;
                  obj[1] = ui.item.label;
                  return obj;
            }
      }); 
}

$(document).on('focus', '.farmCompl', function(){
      obj = autoComp(this, 3, 'search.php', 'music');
      if(obj){
            alert(obj[0]);
            alert(obj[1]);
      }
});

autoComp(...)想成为一个从我项目中的很多地方调用的通用函数.... 'field'是要完成的选择器(例如'#text1'),srt是自动完成的开始.... 事实上,Ajax正常工作自动完成呈现数据库选项...... 问题在于选择选项.... 当我选择该选项时,我希望自动完成将id和label的值返回给函数或调用autoComp(...)的事件 我希望已经清楚了 再见

1 个答案:

答案 0 :(得分:0)

jQuery Autocomplete

您可以只使用内置于自动完成功能的侦听器,而不是尝试为select事件设置另一个侦听器。只需使用已经在'select'上调用的函数来执行您想要执行的操作。

我希望这会有所帮助。

    function autoComp(field, srt, file, act) {
          $( field ).autocomplete({
                minLength: srt,
                source: function( request, response ) {
                      $.ajax({
                            url: file,
                            type: 'post',
                            dataType: "json",         
                            data: {'azione':act, 'txt':request.term},
                            success: function(data) {
                                  response( $.map( data.result, function( item ) {
                                        return { 
                                              label: item.text, 
                                              value: item.text,
                                              id:  item.id
                                        }
                                  }));
                            }
                      });
                },
                select: function( event, ui ) { 
                    var obj = [];
                    obj[0] = ui.item.id;
                    obj[1] = ui.item.label;
                    alert(obj[0]);
                    alert(obj[1]);
                }
          }); 
    }

顺便说一句,如果你是creating an array,你应该在声明和[0]..表示法中使用方括号来获取值。如果要创建对象,请在声明中使用花括号并命名为“。”。把事情搞清楚的参数。例如,您可以将对象声明为var obj = {},但随后将其指定为obj.id = ui.item.id;等。有关详情,请阅读What is the difference between an array and an object