Javascript 为什么手动删除会破坏我的JQuery自动完成?

Javascript 为什么手动删除会破坏我的JQuery自动完成?,javascript,php,jquery,autocomplete,Javascript,Php,Jquery,Autocomplete,使用jQueryAutoComplete,如果您键入几个字母,您可以使用“Shawn”、“Vinnie”、“Lisa”名称下拉列表并选择一个。当您这样做时,它会在下面的文本框中抛出名称。但是,如果您选择一个名称并将其选中,然后意识到该名称是错误的,并手动将其从文本框中删除,则该名称似乎会破坏功能,即如果您尝试再次选择名称,则可以,但不会显示在文本框中 有没有什么明显的事情是我做错了 另外,请注意,是否有一种方法只允许在文本框中输入一个姓名,因为应该始终只有一个主管 以下是完整代码: <?p

使用jQueryAutoComplete,如果您键入几个字母,您可以使用“Shawn”、“Vinnie”、“Lisa”名称下拉列表并选择一个。当您这样做时,它会在下面的文本框中抛出名称。但是,如果您选择一个名称并将其选中,然后意识到该名称是错误的,并手动将其从文本框中删除,则该名称似乎会破坏功能,即如果您尝试再次选择名称,则可以,但不会显示在文本框中

有没有什么明显的事情是我做错了

另外,请注意,是否有一种方法只允许在文本框中输入一个姓名,因为应该始终只有一个主管

以下是完整代码:

<?php
session_start();
require_once('includes/databaseconfig.php');
//Get employees to put in the availablePlayers array for autocomplete
    $sql = "SELECT * FROM users
            ORDER BY lname";
            $allemployees = mysqli_query($con, $sql);
            if (!$allemployees) {
            die("Database query failed: " . mysqli_error($con));
            } else {
                    while ($row = mysqli_fetch_assoc($allemployees)) {
                       $supervisordata .= "{ value: \"" . $row['fname'] . " " . $row['lname'] . " \",
                                        label: \"" . $row['fname'] . " " . $row['lname'] . "\",
                                        icon: \"<img src='" . $row['picture'] . "'>\"},";
                    }
            }
?>
<!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" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="robots" content="noindex, nofollow">
<title>Reporting Request</title>
<link href="style1.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://use.fontawesome.com/4cb79c3742.js"></script>
<link href='https://fonts.googleapis.com/css?family=Lato:400,400italic,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
 $(function() {

        var availableSupervisors = [            
            <?php 
                echo $supervisordata;
            ?>
        ];

        function log( message ) {
            $( "<div>" ).text( message ).prependTo( "#log" );
            $( "#log" ).scrollTop( 0 );
        }

        $( "#supervisor" ).autocomplete({
            source: availableSupervisors,
            html: true,
            minLength: 2,
            select: function( event, ui ) {
                log( ui.item ?
                    "" :
                    "" );
            $('#log-supervisor').append(ui.item.value);
            ui.item.value="";  //blank out input search field
            }
        });
});                                   
</script>
</head>
<body>
<div class="wrapper">
<h1> Request Form</h1>
<form id="submitRequest" action="" method="post">
   <div class="always heading">
   <i class="fa fa-users"></i>&nbsp;&nbsp;<span class="section-heading">Communication</span><br/><br />
   </div>
   <div class="ui-widget always">  <span class="question">Requester Supervisor:</span>  
    <span class="toolwrapper"><i class="fa fa-question-circle-o"></i>
    <span class="tooltip">Please enter the name of your supervisor.</span>
    </span><input name="supervisor" id="supervisor" type="text" value=""  class="textfield" placeholder="Type at least 2 letters of employee's name" />
              </div>
          <div class="ui-widget always">
          <textarea name="supervisorlist"  id="log-supervisor" class="ui-widget-content" placeholder="Names will appear here, separated by comma"></textarea>
          <input type="hidden" name="hidden" value="hidden"/>
   </div>
</form>
</div>
</body>
</html>

您将要更新以下内容:

$('#log-supervisor').append(ui.item.value);
对此

$('#log-supervisor').val($('#log-supervisor').val() + ui.item.value);

因为在执行追加操作时,您正在设置文本节点和值。当您删除文本区域中的某些内容时,它只是节点,并且值不会更改。因此,jQuery将清空该区域,而您将看不到任何内容。

您将希望更新此内容:

$('#log-supervisor').append(ui.item.value);
对此

$('#log-supervisor').val($('#log-supervisor').val() + ui.item.value);

因为在执行追加操作时,您正在设置文本节点和值。当您删除文本区域中的某些内容时,它只是节点,并且值不会更改。因此jQuery将清空该区域,您将看不到任何内容。

设置textarea内容的正确方法是设置其值,而不是设置其HTML。HTML仅用作初始值,直到您对其进行编辑。因此,请使用$'log-supervisor'.val而不是$'log-supervisor'.append

var可用监督器=[{ 价值:Mustafa Alsalihi, 标签:Mustafa Alsalihi, 偶像: }, { 价值观:安娜玛丽·安东努奇, 标签:Annamarie Antonucci, 偶像: }, { 价值观:丽莎·安齐维诺, 标签:Lisa Anzivino, 偶像: }, { 价值观:丽莎·巴格, 标签:Lisa Barger, 偶像: }, { 价值观:简·巴格, 标签:Jane Barger, 偶像: }, { 价值观:西蒙·巴雷尔, 标签:西蒙·巴雷尔, 偶像: }, { 价值观:大卫·巴蒂诺, 标签:大卫·巴蒂诺, 偶像: }, { 价值观:Danielle Bertini, 标签:Danielle Bertini, 偶像: }, { 价值:Riccardo Bocci, 标签:Riccardo Bocci, 偶像: }, { 价值观:金·博斯蒂克, 标签:Kim Bostick, 偶像: }, { 价值观:迈克尔·布兰德塞马, 标签:Michael Brandsema, 偶像: }]; $function{ 函数日志消息{ $.textmessage.prependTolog; $log.0; } $supervisor.autocomplete{ 资料来源:可用的监督员, 是的, 最小长度:2, 选择:functionevent,ui{ logui.item? : ; $'log-supervisor'.valfunctioni,旧值{ 返回oldvalue++ui.item.value; }; ui.item.value=;//清空输入搜索字段 } }; }; 申请表 表达 申请者主管: 请输入主管的姓名。
设置textarea内容的正确方法是设置其值,而不是设置其HTML。HTML仅用作初始值,直到您对其进行编辑。因此,请使用$'log-supervisor'.val而不是$'log-supervisor'.append

var可用监督器=[{ 价值:Mustafa Alsalihi, 标签:Mustafa Alsalihi, 偶像: }, { 价值观:安娜玛丽·安东努奇, 标签:Annamarie Antonucci, 偶像: }, { 价值观:丽莎·安齐维诺, 标签:Lisa Anzivino, 偶像: }, { 价值观:丽莎·巴格, 标签:Lisa Barger, 偶像: }, { 价值观:简·巴格, 标签:Jane Barger, 偶像: }, { 价值观:西蒙·巴雷尔, 标签:西蒙·巴雷尔, 偶像: }, { 价值观:大卫·巴蒂诺, 标签:大卫·巴蒂诺, 偶像: }, { 价值观:Danielle Bertini, 标签:Danielle Bertini, 偶像: }, { 价值:Riccardo Bocci, 标签:Riccardo Bocci, 偶像: }, { 价值观:金·博斯蒂克, 标签:Kim Bostick, 偶像: }, { 价值观:迈克尔·布兰德塞马, 标签:Michael Brandsema, 偶像: }]; $function{ 函数日志消息{ $.textmessage.prependTolog; $log.0; } $supervisor.autocomplete{ 资料来源:可用的监督员, 是的, 最小长度:2, 选择:functionevent,ui{ logui.item? : ; $'log-supervisor'.valfunctioni,旧值{ 返回oldvalue++ui.item.value; }; ui.item.value=;//清空输入搜索字段 } }; }; 申请表 表达 申请者主管: 请输入主管的姓名。