简体   繁体   English

在从动态附加的li列表中选择时,将选定的li文本附加到输入中,并使用jquery清除列表

[英]on select from dynamically appended li list append the selected li text to input and also clear the list using jquery

This is my form 这是我的表格

    <form action="jqry.php" method="post">
      <input class="name" name="name" type="text" id="name">
      <input name="submit" type="submit" value="submit" />
    </form>
    <ul id="display_results"></ul>

This is my js code 这是我的js代码

     $(function(){
       $("#name").keyup(function() {
       var uname = $(this).val();
       var dataString = 'uname='+ uname;
         if(uname!='') {
            $.ajax({ 
              type: "POST",
              url: "examplesearch.php",
              data: dataString,
              cache: false,
              success: function(html) {
                alert(html);
              $("#display_results").html(html);
              }
            });
            }
           return false;
           });
         });

Here comes the fetching data from database and returning the value 这是从数据库中获取数据并返回值

      <?php
        $dbhost = "localhost";
        $dbuser = "root";
        $dbpass = "";
        $dbname= "userdata";
        $conn = mysql_connect($dbhost, $dbuser, $dbpass);
        mysql_select_db($dbname) or die ('<META HTTP-EQUIV="Refresh"   CONTENT="0;URL=Failed.php?dberror=1">');    

        $token = mysql_escape_string($_POST['uname']); 

        $query = "SELECT user_name FROM users WHERE user_name LIKE '%$token%'";
        $result = mysql_query($query) or die(mysql_error());
        $string="";

         if (mysql_num_rows($result)){
            while($row = mysql_fetch_assoc($result)){
            $string .= "<li>".$row['user_name']."</li>";
           }
         }else{
             $string = "No matches found!";
         }
             echo $string;
        ?>

onkeyup the user_names are displayed dynamically. onkeyup user_names是动态显示的。 The problem is that I am not able to perform onclick on dynamically updated list. 问题是我无法在动态更新的列表上执行onclick。 Also when I click on one li, the text of that li must be appended to input value with id=name and the ul must clear. 同样,当我单击一个li时,该li的文本必须附加到id=name输入值后面,并且必须清除ul。 the ul list must be displayed only when keyup is performed on input tag with id=name 仅当对id=name输入标签执行键盘键入时,才必须显示ul列表

Use event delegation for the dynamic li , just target the static container: 将事件委托用于动态li ,仅针对静态容器即可:

$("#display_results").on("click", "li", function() {
    $("#name").val($(this).text());
    //Do ajax
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM