自动完成功能无法使用动态HTML

时间:2013-04-17 18:06:36

标签: php jquery autocomplete

我通过enterPerson()动态地为输入标签添加html,然后调用onkeyup = changeOnType(this),它在回显$ auto中的结果autoInvit.php应该显示自动完成,但为什么我的autocomlete代码不起作用,实际数据显示是否我提醒它。任何人都可以帮帮我吗? 提前谢谢你:)

jquery和autocomplete的头文件:

<link rel="stylesheet" href="//code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />  
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script src="//code.jquery.com/jquery-1.8.3.js"></script>
<script src="//code.jquery.com/ui/1.10.0/jquery-ui.js"></script>

“main.php”中的自动填充:

<script>    
function changeOnType(x){

    $.post(
    "autoInvit.php",
    {
         vals: $(x).val()
    },
    function(data){

    $("#"+x.id).autocomplete( {source:"autoInvit.php" }  );

    //alert(data);  
    }
    );

}
</script>

这是“invities.php”中动态html的php代码:

<?php 

echo '<input class="e" type="email" id="email"  onkeyup="changeOnType(this)"  autocomplete="on" role="textbox" aria-autocomplete="list" aria-haspopup="true"  />';
?>

这是我的php文件“autoInvit.php”,它回应了结果:

 <?php

    include("includes/connection.php"); 

    $value = strip_tags($_POST['vals']);

    $req = "SELECT email as name "
        ."FROM members "
        ."WHERE email LIKE '".$value."%' "; 


    $query = mysql_query($req);

    while($row = mysql_fetch_array($query))
    {
        $results[] = $row['name'];
    }


    echo json_encode($results);

    ?>

请帮忙

1 个答案:

答案 0 :(得分:0)

无需提出post请求。 编辑:无需调用单独的函数或将侦听器附加到输入,只需注册自动完成插件即可。这需要在DOM准备好后调用,因此您需要将其包装在就绪函数中。这应该是您需要的所有JavaScript:

$(function() {
    $("#"+x.id).autocomplete( {source:"autoInvit.php" }  );
});

用户输入的内容将作为参数term

与请求一起传递

来自autocomplete的jQuery文档:

  

String:使用字符串时,Autocomplete插件需要这样做   string指向将返回JSON数据的URL资源。它可以   在同一主机上或在另一主机上(必须提供JSONP)。该   自动填充插件不会过滤结果,而是过滤查询   string添加了一个术语字段,服务器端脚本应该这样   用于过滤结果。例如,如果源选项是   设置为“http://example.com”,用户输入foo,即GET请求   将被http://example.com?term=foo。数据本身可以   格式与上述本地数据相同。

此外,在将内容从用户直接传递到数据库时,您需要小心。您可以自己打开SQL injection