在jQuery-ui自动完成功能中使用jQuery-ui自动完成变量

时间:2010-11-12 14:17:37

标签: javascript jquery jquery-ui autocomplete

如何在jQuery-ui自动完成功能中使用jQuery-ui自动完成中的选定项?

e.g。对于这个HTML:

<div class="ui-widget">
    <label for="project">Project: </label>
    <input id="project" />
    <label for="phase">Phase: </label>
    <input id="phase" />
    <label for="filename">Project: </label>
    <input id="filename" />
</div>

我正在使用以下自动完成功能和JSON端点来提供数据。

$(function() {
$( "#project" ).autocomplete({
    source: baseUrl+"json/listtitles",
    minLength: 2,
    select: function( event, ui ) {
    }
});
});

然后在第二次自动完成中,我想从第一个自动完成功能中获取所选值,并使用它来构建URL字符串,以便在第二个自动完成的源属性中使用(此处显示为valueFromFirstAutocomplete)。

$(function() {
$( "#phase" ).autocomplete({
    source: baseUrl+"json/listphases/"+valueFromFirstAutocomplete,
    minLength: 2,
    select: function( event, ui ) {
    }
});
});

2 个答案:

答案 0 :(得分:2)

使用回调自定义源选项,将附加参数添加到URL:

$( "#project" ).autocomplete({
    source: baseUrl+"json/listtitles",
    minLength: 2
});
$( "#phase" ).autocomplete({
    source: function(request, response) {
        $.get(baseUrl + "/json/listphases/" + $("#project").val(), request, response);
    },
    minLength: 2
});

答案 1 :(得分:0)

你可以把一个放在另一个里面......

有什么理由不起作用吗?

$(function() {
$( "#project" ).autocomplete({
    source: baseUrl+"json/listtitles",
    minLength: 2,
    select: function( event, ui ) {
       $(function() {
       $( "#phase" ).autocomplete({
           source: baseUrl+"json/listphases/"+ui.item.value,
           minLength: 2,
           select: function( event, ui ) {
           }
       });
       });
    }
});
});

要独立使用这些,您可以执行以下操作:

var funclist = {
    populate1 : function() {
      $( "#project" ).autocomplete({
        source: baseUrl+"json/listtitles",
        minLength: 2,
        select: populate2;
      },

   populate2 : function(event,ui) {
      $( "#phase" ).autocomplete({
        source: baseUrl+"json/listphases/"+ui.item.value,
        minLength: 2,
        select: populate3;
     }
   populate3 : ; // etc
}

$(funclist.populate1);