2013-05-03 123 views
3

我有以下JSON数组:jQuery用户界面自动完成JSON阵列

partTags = [{"part":"Part1","dwg":"A"},{"part":"Part2","dwg":"B"}] 

这基本上携带零件编号和对应的绘图数字/字母

到添加第二参数(“图号”此前)我只有部件号,我使用jQuery自动完成来搜索数组。我现在想要做的是在我的第一个输入中搜索部件号:<input type="text" id="part_number">,并在单击部件号后自动将其相应的图号添加到第二个输入:<input type="text" id="drawing_number">

这是我有:

$("#part_number").autocomplete({ 
    delay: 100, 
    source: partTags 
}); 

如何修改上面的代码来实现这一目标?我对jQuery没有太多的工作,所以在涉及到一些API时我很失落。

这里是我摆弄了一下后,至今...

$("#part_number").autocomplete({ 
    delay: 45, 
    source: partTags, 
    select: function(event, ui) 
    { 
     $(this).val(ui.item.part); 
     $("input#drawing_number").val(ui.item.dwg); 
     return false; 
    } 
}); 

回答

1

好吧,我想通了看API之后。

partTags = [{"label":"Part1","dwg":"A"},{"label":"Part2","dwg":"B"}] 

我不得不重新命名为“部分”为“标签”

$("#part_number").autocomplete({ 
    delay: 45, 
    source: partTags, 
    select: function(event, ui) 
    { 

     $(this).val(ui.item.label); 
     $(this).closest('tr').find("input[id^='drawing_number']").val(ui.item.dwg); 
     return false; // find the drawing number input on that row 
    } 
    }).data("autocomplete")._renderItem = function(ul, item){ 
     if(item.dwg!=null || item.dwg!='') // if the drawing is null or empty 
     { 
      return $("<li></li>").data("item.autocomplete", item).append("<a><strong>" + item.label + "</strong> - Rev " + item.dwg + "</a>").appendTo(ul); 
     } 
     else 
     { 
      return $("<li></li>").data("item.autocomplete", item).append("<a><strong>" + item.label + "</strong></a>").appendTo(ul); 
     } 
    }; 
1

我从来没有使用自动完成本地字符串,但下面的工作。

$("#part_number").autocomplete({ 
minLength: 0, 
source: function (request, response) { 
    $.post("/echo/json/", { 
     json: '[{"part":"Part1","dwg":"A"},{"part":"Part2","dwg":"B"}]', 
     delay: 1 
    }, function (data) { 
     response($.map(data, function (pn) { 
      return { 
       value: pn.dwg, 
       label: pn.part 
      }; 
     })); 
    }); 
}, 
select: function (event, ui) { 
    $('#part_number').val(ui.item.label); 
    $("input#drawing_number").val(ui.item.value); 
    return false; 
} 
}); 

这里是一个工作demo

+0

感谢您的!唯一的一点是,如果源代码来自远程位置,它不会过滤你正在输入的内容......我不知道如何让它工作。当页面加载消耗时间时,我最终将所有内容加载到全局变量中。理想情况下,我希望它能从远程文件中获取Json,以便在发生更改时能够实现结果...任何想法? – Dimitri 2013-05-05 03:03:45

+0

@Dimitri不客气。这里是[链接](http://developwithstyle.com/articles/2010/05/14/jquery-ui-autocomplete-is-it-any-good/),如果你想得到一个可能对你有帮助的关于如何为远程数据实现自动完成或缓存查询结果的一些提示。 – fcmaine 2013-05-07 18:41:54

+0

这是一篇很棒的文章!感谢分享。 最好。 – Dimitri 2013-05-09 16:50:56

相关问题