将文本框中的文本链接到预定义列表

时间:2016-01-29 17:39:53

标签: php jquery mysql codeigniter autocomplete

我正在使用PHP,Jquery,CodeIgniter开发一个项目。我们有一个存储在MySQL表中的产品数据库。

我们有一个PHP页面,用户可以在其中注册服务请求。要求是,如果用户开始在文本框中键入 ExecutorService exectutorService = Executors.newCachedThreadPool(); List<Callable<Object>> callables = Arrays.asList( (Callable(Object) new Check1Callable(), (Callable(Object) new Check2Callable(), (Callable(Object) new Check3Callable()); List<Future<Object>> futures = new ArrayList<>(); try { futures = executorService.invokeAll(callables,maxWaitTime, TimeUnit.SECONDS); } catch (Exception e) { } for (Future thisFuture : futures) { try { if (thisFuture.isDone() && !thisFuture.isCancelled()) { <accept the future's result> } } catch (Exception e) { } } ,我们应该能够将其链接到我们数据库中的@product1

这与facebook的方式非常相似,但要求是一旦用户开始输入product1,我们的页面应该是智能的,以猜测产品并提供选项。喜欢例如如果用户输入@,系统应该给他@pro...product1等。

请帮忙。如果我不清楚,我可以详细说明。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用jquery.mentionsInput插件。

$('textarea.mention').mentionsInput({
  onDataRequest:function (mode, query, callback) {
    // here instead of having all data you can do an AJAX-request to your server
    var data = [
      { id:1, name:'product1', avatar:'..', type: 'product' },
      { id:2, name:'product2', avatar:'..', type: 'product' },
    ];
    data = _.filter(data, function(item) { return item.name.toLowerCase().indexOf(query.toLowerCase()) > -1 });

    callback.call(this, data);
  }
});

然后在php端解析@[product1](product:1)