如何使用JavaScript或jQuery选择文本并在另一个文本字段中显示它

I have a PHP/AJAX search script working just fine. The problem is when I type something in the text field the suggestions appear below, but they cannot be selected. In short, I want to select one of the suggestion and show the value in the search text field upon selecting it.

I have tried a solution in JavaScript, but it doesn't work. It shows an error in the console like "the select value is null".

ajax.php

<head>
<script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">
</script>

</head>
<body>
<input id="sear" autocomplete="off" type="text" name="search" 
placeholder="Seaarch here" onkeyup="search(this.value)">
<div onclick="ali()" id="list" ></div>

<script>
function search(str){
if(str.length ==0){
    document.getElementById("list").innerHTML="Please Enter Something";
    return;}
xml=new XMLHttpRequest();
xml.onreadystatechange=function(){
    if(xml.readyState==4 && xml.status==200){
        document.getElementById("list").innerHTML=xml.responseText;}
    }

xml.open("GET","search.php?char="+str,true);
xml.send();
}
</script>
<script>
document.addEventListener("DOMContentLoaded",function(){
function ali(){
var acs;
var x=document.getElementById("#list").select();
acs=x.value;
document.getElementById("#sear").innerHtml=acs;
}
});
</script>
</body>

search.php

    <?php
$con=mysqli_connect("localhost","root","","userdiary");
$str=$_GET['char'];

$sql="SELECT * FROM `login` WHERE `user_id` LIKE '$str%' OR `user_name` LIKE 
'$str%'";
$query=mysqli_query($con,$sql);
if(mysqli_num_rows($query)>0){
while($res=mysqli_fetch_assoc($query)){
echo "<option>" .$res['user_name']."</option>"."<hr>";
}
}
else{
echo "No match Found..";
}
?>

If the #sear element looks something like this once suggestions populate into it:

<div id="list">
    <option>test</option>
    <option>test a</option>
    <option>test b</option>
</div>

then you can try this for your jQuery script:

$('#list option').on('click', function() {
    $('#sear').val($(this).text());
});

You can check this code I used it yesterday. You just have to change the name of SQL part according to your goal

Also what I give you is jQuery ui you have to add

<script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>  
  <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css" type="text/css" /> 

and your input must have auto class

search.php:

<?php
define('DB_SERVER', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'some');
if (isset($_GET['term'])){
    $return_arr = array();
    try {
        $conn = new PDO("mysql:host=".DB_SERVER.";port=8889;dbname=".DB_NAME, DB_USER, DB_PASSWORD);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare('SELECT Tname FROM Topic WHERE Tname LIKE :term');
        $stmt->execute(array('term' => '%'.$_GET['term'].'%'));

        while($row = $stmt->fetch()) {
            $return_arr[] =  $row['Tname'];
        }
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }
    /* Toss back results as json encoded array. */
    echo json_encode($return_arr);
}
?>

and jQuery UI

   $(function() {


    $(".auto").autocomplete({
        source: "search.php",
        minLength: 1,

    });                

});

and css

.ui-menu .ui-menu-item a {
    text-decoration: none;
    display: block;
    padding: 5px .4em;
    line-height: 1.5;
    min-height: 0;
    font-weight: normal;
     z-index:11;
}
 ul#ui-id-1{
 z-index:11;
     display: none;
    top: 132px;
    left: 354.5px;
    width: 283px;

 }

You typed select in worng way. It should be something as follows:

<select onchange="ali()" id="list" ></select>