自动填充2从1个自动完成输入表单输入,以查找代码和价格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动填充2从1个自动完成输入表单输入,以查找代码和价格相关的知识,希望对你有一定的参考价值。

我有一个自动完成输入,将自动填写其他2个输入,在这种情况下我使用json,我的问题是当我在水果名称输入中键入2个字符时,它将调出数据库中的所有数据,而它应该只根据我输入的内容显示数据,但是如果我使用第13行的'var json',它将按照我的预期显示数据,当我在第16行使用source时,它将调出所有数据我有,如果我的代码有错误?如果你能帮助我,我将非常感激

<head>
  <link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
</head>
<div>
  <input type="text" id="secondInput" name="code" value="" placeholder="Code" readonly>
  <input type="text" id="field" name="fruit" value="" placeholder="Fruit name(input here)">
  <input type="text" id="thirdInput" name="price" value="" placeholder="Price" readonly="" onkeypress="return isNumber(event)" maxlength="12">
</div>
<script type="text/javascript">
    $(function() {
        //var json = [{"code": "1","label": "Apple","price": "10000"},{"code": "17","label": "Banana","price": "20000"}];
        $("#field").autocomplete({
            //source: json,
      source: "<?= site_url('home/take_json_fruit'); ?>",
      data: { fruit: $("#field").val()},
      minLength: 2,
      dataType: "json",
      select: function(event, ui) {
       $("#secondInput").val(ui.item.code);
       $("#thirdInput").val(ui.item.price);
     },

     change: function (event, ui) {
       if (ui.item === null) {
        $(this).val('');
        $('#field_id').val('');
      }
    }
  });
        $("#field").focusout(function() {
            if ($("#field").val() === '') {
                $('#field_id').val('');
            }
        });
    });
</script>

这是我在控制器className Home中的函数

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Home extends CI_Controller {
  public function __construct()
  {
    parent::__construct();
    $this->load->helper('url');
    $this->load->library('session');
    $this->load->model('Json_decode');
  }
  public function take_json_fruit()
  {
    $fruit = $this->input->post('fruit');
    $rows = $this->Json_decode->take_fruit_json($fruit);
    echo json_encode($rows);
  }
}

这是我的模型className Json_decode

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Json_decode extends CI_Model {
  public function take_fruit_json($fruit)
  {
    $this->db->select('code_fruit as code, fruit as label, price_fruit as price');
    $this->db->like('fruit', $fruit);
    $query = $this->db->get('fruits');
    return $query->result();
  }
}
答案

在codeigniter的查询构建器类中,类似于在术语之前和之后放置%。这就是为什么你(显然)得到许多额外的结果。尝试第三个可选参数:

$this->db->like('fruit', $fruit, 'after');

based on CI Documentation on Query Builder Class

另一答案

这已经解决了,我做了一个helper_codeigniter从表中提取数据并使其在javascript中变量,希望可以帮助大家

以上是关于自动填充2从1个自动完成输入表单输入,以查找代码和价格的主要内容,如果未能解决你的问题,请参考以下文章

如果表单有超过 200 个输入字段,则自动填充/自动完成不起作用

Rails 4 / jQuery:需要在表单输入中输入值以自动填充其他输入

jQuery - 基于变量参数查找xml子项

markdown 禁用HTML表单输入自动完成和自动填充

使用自动完成填充表单时,Javascript 不启用按钮

在 JQuery 自动完成填充输入字段后调用新函数