【问题标题】:Not able to create auto suggest feature with dynamic data无法使用动态数据创建自动建议功能
【发布时间】:2018-03-12 10:49:43
【问题描述】:

我正在使用this plugin 创建自动完成和标签的组合功能。 我的输入字段代码和与之相关的脚本

<input id="form-tags-4" name="tags-4" type="text" value="">
<script type="text/javascript">
  $(function() {

    $('#form-tags-4').tagsInput({
      'autocomplete': {

        source: [
          'apple',
          'banana',
          'orange',
          'pizza'
        ]
      } 
    });
  });
</script>

它适用于静态数据,但是我希望代替存储在数据库的源动态数据中的静态数据。

目前我的动态数据是 $normal_skill 格式,如下所示

Array
(
    [0] => stdClass Object
        (
            [normal_skill] => HTML
        )

    [1] => stdClass Object
        (
            [normal_skill] => CSS
        )

    [2] => stdClass Object
        (
            [normal_skill] => Javascript
        )
)

我试图从 normal_skill 收集数据并将其放入这样的数组中

$items = array();
foreach($normal_skill as $n_skill) {
 $items[] = $n_skill->normal_skill;
}

我用 $items 代替了源代码,在用 $items 替换源代码后,自动建议和标签功能停止工作。

为了测试,我打印了 $items,它显示了数据,但是当替换为源时,没有数据。控制台也没有显示任何特定错误。

谁能告诉我如何用我的数据替换源,我希望它也可以执行逐字母搜索。例如:- 如果我输入“h”,那么以 h 开头的单词应该自动提示,但是现在所有包含“h”的单词都会显示出来

【问题讨论】:

  • 但它不起作用不是一个正确的问题。您在控制台中有任何错误吗?警报项目是空的吗?尝试调试您的代码。
  • @Shree Khanal 我已经编辑了我的帖子。希望它可以为您提供更好的清晰度。控制台没有错误。如果我打印 $items 它会显示数据,但是当用源替换时则没有数据

标签: javascript php jquery twitter-bootstrap jquery-tags-input


【解决方案1】:

您是否尝试使用 json_encode() 将其传递给 javascript?

<input id="form-tags-4" name="tags-4" type="text" value="">
<script type="text/javascript">
  $(function() {

    $('#form-tags-4').tagsInput({
      'autocomplete': {
        source: <?= json_encode($items) ?>
      } 
    });
  });
</script>

如果是远程源。

$items = array();
foreach($normal_skill as $n_skill) {
 $items[] = $n_skill->normal_skill;
}
exit(json_encode($items));

然后在您的 javascript 中,将其设置为源文件:

<script type="text/javascript">
  $(function() {

    $('#form-tags-4').tagsInput({
      'autocomplete': {
        source: './tags.php'
      } 
    });
  });
</script>

【讨论】:

  • 它似乎可以获取数据,但也希望它执行逐字母搜索。例如:- 如果我输入“h”,那么以“h”开头的单词应该出现在下拉列表中,但是现在所有包含“h”的单词都会显示出来
  • 如果您查看控制台,您会看到它发送带有值的?term= 参数,按值过滤或查找,然后以[{"id":"","label":"HTML","value":"HTML"}] json 结构响应。然后在您的选择回调中使用ui.item.value。它的所有内容都在 jQuery autocomplete 的文档中,因为该库正在使用它。
  • 你给的那个链接,是不是每次输入或者搜索都会调用api
猜你喜欢
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多