如何使用复杂的JSON自动建议textarea

时间:2017-10-27 11:17:28

标签: javascript jquery node.js jquery-ui jquery-ui-autocomplete

我正在寻找自动完成库,它可以支持嵌套(查找)字段的自动完成

就像我有数据数组

var Data=[
  "Name",
  {
    "Employee": [
      "name",
      "address",
      "phone"
    ]
  },
  "Size",
  "LastName"
  {
    "Vacation": [
      "name",
      "address",
      "phone"
    ]
  }
]

如果我输入' N '那么它应该建议Name,LastName

如果我输入' E '它应该建议员工和

如果我输入员工 ,那么它应该建议员工对象的属性,如姓名,地址和电话

Jquery自动完成库是否有这样的灵活性,或者如果有人知道具有这种灵活性的不同库,请建议我。

1 个答案:

答案 0 :(得分:0)

这解决了问题的第一部分:

工作示例:http://jsfiddle.net/Twisty/a3vffhfn/

<强>的JavaScript

var myData = [
  "Name", {
    "Employee": [
      "name",
      "address",
      "phone"
    ]
  },
  "Size",
  "LastName", {
    "Vacation": [
      "name",
      "address",
      "phone"
    ]
  }
];

$(function() {
  $("#desc").autocomplete({
    minLength: 1,
    source: function(req, resp) {
      var q = req.term;
      var results = [];
      console.log("Term:", q);
      $.each(myData, function(k, v) {
        console.log(k, v, typeof v);
        if (typeof v == "string") {
          // Item is String
          if (v.indexOf(q) === 0) {
            // If term matches String, add to Results
            results.push(v);
          }
        }
        if (typeof v == "object") {
          // Item is Object
          $.each(v, function(j, z) {
            if (j.indexOf(q) === 0) {
              // Check object keys, if matches, add key to Results
              results.push(j);
            }
          });
        }
      });
      console.log("Results:", results);
      resp(results);
    }
  });
});

如果您输入&#34; N&#34;或&#34; E&#34;,&#34;姓名&#34;和&#34;员工&#34;出现。这不涉及问题的第二部分。由于您没有指定显示此数据的方式,因此不容易回答。