自动完成在PHP标记内创建的文本框

时间:2016-12-20 09:14:56

标签: php jquery

echo "<table width='234' border='1'>";
while(strtotime($USA_START) <= strtotime($USA_END)) 
{

    $day_num = date('d', strtotime($USA_START));
    $day_name = date('l', strtotime($USA_START));
    echo "<tr><td>$day_num </td><td> $USA_START</td> <td> $day_name</td><td><input type='text'  name='txtRep[]'  ></td></tr>";
    $USA_START = date("Y-m-d", strtotime("+1 day", strtotime($USA_START)));
}

echo "</table>";

我上面的php代码有一个循环,并为一行中的每条记录创建一个文本框。

当它在php代码之外时(这意味着它是纯HTML代码)我已成功自动完成下面的文本框。

<td><input type='text' name='txtRep[]'  ></td>

使用JQuery。但是当我通过回显文本框在PHP标签内创建它时,自动完成过程不起作用?

任何人都可以提出建议吗?或者这是不可能的?

以下是自动完成的PHP代码

<?php
require_once "../DCR/connection/conn.php";
$q = strtolower($_GET["q"]);
if (!$q) return;

$query = "select * from REPPROF where REPTYPE='Mrep' and (REPNAME like '%".strtoupper($q)."%' or REPCODE like '%".strtoupper($q)."%')"; 

$statement = oci_parse ($connection, $query);
oci_execute ($statement);

while ($row = oci_fetch_array ($statement, OCI_BOTH)){  

    $txt1=$row['REPCODE'];
    $txt2=$row['REPNAME'];  

$B=$txt1.'~'.$txt2;                     

echo "$B\n";

    //echo  $query;                 
}
oci_close($connection);
?>

和Jquery

$().ready(function() {  
$("#txtMedRep").autocomplete("Mrep_auto_complete.php", {    width: 200,max: 20,selectFirst: false});
});

2 个答案:

答案 0 :(得分:1)

问题不在于PHP(不再)。它会输出输入的名称就好了。但是JQuery尝试附加到未知的HTML元素id。 1710不再存在(经过一些编辑后)。

要解决此问题,请尝试:

$("#txtMedRep")

当然不是所有输入,而是在这些输入上输出一个易于修复的类

答案 1 :(得分:1)

由于您已对问题进行了编辑,因此现在不再使用ID&#34; txtMedRep&#34;。因此,Javascript不会将自动填充功能添加到任何内容中。

使用类定义文本框,例如:

<input type='text'  name='txtRep[]'  class='autocomplete'>

然后将自动填充定义更改为:

$().ready(function() {  
  $(".autocomplete").autocomplete("Mrep_auto_complete.php", { width: 200,max: 20,selectFirst: false});
});

这将使其将自动完成功能添加到具有&#34; autocomplete&#34;的所有元素。类。