-1

下面的代码有一个 id='theservice' 的选择框和一个 id ='servicename' 的文本字段。此代码通过检查服务选择框中哪个服务处于活动状态来自动完成服务名称文本字段。但不幸的是,源字符串保持不变选择框已更改。

$( "#servicename" ).autocomplete({

        source: "index.php?key="+($('#theservice').find('option:selected').val()),
        minLength: 2,
    });

多谢

4

2 回答 2

0

使用.autocomplete( "option" , optionName , [value] )方法解决了问题

$( "#servicename" ).autocomplete({

        source: "index.php?key="+($('#theservice').find('option:selected').val()),
        minLength: 2,
            search: function( event, ui ) {
$( "#servicename" ).autocomplete( "option" ,'source' ,'index.php?key="+($('#theservice').find('option:selected').val()));}
    });
于 2012-07-20T01:11:34.360 回答
0

大概是个delegation问题。

添加了自动完成传播示例

//build the autocomplete function, sans source
$('#servicename').autocomplete({
  minLength: 2
});

var theArray = [];
$('body').on('change', 'select', function(){
  $.ajax({
    url: 'index.php?key='+$(this).val(),
    dataType: 'json/jsonp',
    success: function(data){
      //i don't know what the array you return looks like, but autocomplete expets a key:value relationship
      $.each(data, function(key, value){
        theArray.push({label: value, value: key});
      });
      //a custom function to pass the array into
      startAutoComplete(theArray);
    }
  });
});

function startAutoComplete(array){
  $('#servicename').autocomplete('option', 'source', array);
}

使用上面的代码,我们实例化自动完成实例,我们只识别我们需要的参数,不包括源。

然后我们定义一个空数组,我们可以将 ajax 请求返回的数据推送到该数组中。

在我们的 select 函数中,我们将值传递给要解析的服务器。我不知道您是否期望 JSON/JSONP 格式,所以您必须自己更改它。

success:function(data)我们从服务器取回请求时,最好响应是json_encode'ed。此外,当我们将值推入数组时,最好使用key -> value关系。自动完成允许 alabel和 avaluefunction(event, ui){ //do stuff with ui.item.label / ui.item.value}'

我们在 的范围之外声明一个未初始化的函数document.ready,并将数组传递给函数。在这个函数中,我们改变了自动完成的来源。

希望这一切都有意义。

于 2012-07-15T15:52:38.540 回答