【问题标题】:Apply autocomplete to dynamically generated textboxes with data from database使用数据库中的数据将自动完成应用于动态生成的文本框
【发布时间】:2013-09-26 15:24:21
【问题描述】:

关于我的查询,我在 stackoverflow 上经历了许多问题,但无法将它们应用于我的问题。

因此,我在这里提供我一直在使用的文件。

我可以成功地使用带有静态文本框的自动完成功能。我从数据库中获取数据。但是,我无法弄清楚如何为动态生成的文本框做到这一点。我希望使用数据库中的数据为动态生成的文本框实现自动完成功能

这是我的文件:

index.php

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>Auto Complete Input box</title>
   <link rel="stylesheet" type="text/css" href="jquery.autocomplete.css" />
  <script type="text/javascript" src="jquery.js"></script>
   <script type="text/javascript" src="jquery.autocomplete.js"></script>
    <script>
     $(document).ready(function(){
    $("#name").autocomplete("autocomplete.php", {
    selectFirst: true
});
 });
 </script>

  <script>
   function addForm(){
  $("#forms").append(
    "<form><input type ='text' name='winner' id='winner'><br/></form>"
   );
 }
  </script>
 </head>

  <body>
  <label>Name:</label>
   <input name="name" type="text" id="name" size="20"/>
   <input type="button" name="addmore" id="addmore" value="Add More Winners" onclick="addForm();"/>
<div id = "dyanamic"></div>
 </body>
 </html>

自动完成.php

  <?php
require 'config.php';
$q=$_GET['q'];
$my_data=mysql_real_escape_string($q);
//$mysqli=mysql_connect('localhost','root','','emp_db') or die("Database Error");
$sql="SELECT name FROM employee WHERE name LIKE '%$my_data%' ORDER BY name";
$result = mysql_query($sql) or die(mysqli_error());

if($result)
{
    while($row=mysql_fetch_array($result))
    {
        echo $row['name']."\n";
    }
}

?>

【问题讨论】:

  • 你在哪里添加文本输入?
  • @tymeJV:我已经更新了我的代码以显示我如何添加文本框..
  • 使用 jQuery 将新元素添加到 DOM 时,为新文本字段指定一个 ID,然后使用相同的方法 ($("#element_id").autocomplete...)。有什么问题?
  • @Sébastien:我已经更新了我的代码以显示我如何添加文本框。我不完全知道如何对动态文本框使用自动完成功能。此外,我想将 uder 在这些框中添加的所有数据保存到数据库中。我很困惑

标签: javascript php jquery ajax input


【解决方案1】:

在新添加的输入被添加到 DOM 之后,只需调用 .autocomplete() 函数

function addForm() {
    $("#forms").append("<form><input type ='text' name='winner' id='winner'><br/></form>");
    $("#winner").autocomplete("autocomplete.php", {
        selectFirst: true
    });
}

【讨论】:

  • 谢谢它现在工作了.. :) 但它只适用于一个 dyanamix 文本框而不适用于第三个等等.. 如何更改上述代码?
  • @SeeyaK -- 你需要了解 jQuery 选择器是如何工作的,上面只针对新添加的 ID 为 winner 的元素。更改它以适应任何新的。
  • 是的,我试图添加变量计数器之类的东西。可能这是一个愚蠢的想法。是的,我需要学习 jQuery,但我需要一个快速的解决方案,因为它有点紧急。你能告诉我怎么做吗?
  • 嗨.. 我使用了 class 而不是 id,现在它可以工作了。但是当我添加更多代码时,我需要稍后检查它是否工作正常。谢谢你建议我使用 jQuery 选择器。如果我以后遇到更多困难,我会向你寻求帮助
  • 一个问题..即使现在它可以工作了,我使用 id 的类 instd,如果我想在 php 中使用 $_POST 访问这些元素中的每一个,我该怎么办?
【解决方案2】:

我建议您将用于自动完成的初始化代码 ($('#id').autocomplete) 放在动态更新页面的 js 代码部分。我猜你正在使用 ajax,所以你应该有类似的东西

$.ajax({
    // your ajax options here
}).done(
    // here you update your html page
    // and then set the autocomplete on the new element
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多