Javascript Jquery自动完成在自动完成输入之前提交表单

Javascript Jquery自动完成在自动完成输入之前提交表单,javascript,jquery,forms,input,autocomplete,Javascript,Jquery,Forms,Input,Autocomplete,这是我的密码。。。问题是,当我点击“自动完成建议”时,它提交的“发件人”中只包含我输入的信息,而不是所选的自动完成单词。我想这是因为表单提交的速度比输入自动完成的速度快。但我该怎么解决呢 <form id="searchForm" action="../chat/chat.php" method="POST"> <input id="search" type="text" name="getter" value="" placeholder="Searc

这是我的密码。。。问题是,当我点击“自动完成建议”时,它提交的“发件人”中只包含我输入的信息,而不是所选的自动完成单词。我想这是因为表单提交的速度比输入自动完成的速度快。但我该怎么解决呢

    <form id="searchForm" action="../chat/chat.php" method="POST">
        <input id="search" type="text" name="getter" value="" placeholder="Search for user">
    </form>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>
    <script type="text/javascript">
        $(function() {

            $("#search").autocomplete({
                source: "selector.php",
                minLength: 1,
                select: function(event, ui) { 
                    $("#searchForm").submit();
                }
            });
        });
这是selector.php。。。我不知道您是否需要它,但仍然->

<?php

include_once "../additional_code/dbh.inc.php";

$return_arr = array();

$searchTerm = $_GET["term"];

$sql = "SELECT user_uid FROM users WHERE user_uid LIKE '%" . $searchTerm . "%' ";

$result = mysqli_query($conn, $sql);

while($row = mysqli_fetch_assoc($result)) {
    $return_arr[] =  $row['user_uid'];
}
echo json_encode($return_arr);

问题在于select事件似乎更多地被设计为预处理事件。您可以实现自己的自定义选择逻辑和/或通过从方法返回false来取消默认逻辑。您还可以确保在提交表单之前填充输入

someInput.autocomplete({
    source: selector.php,
    select: function (event, ui) {
         $("#search").val(ui.item.value);
         $("#searchForm").submit();
    }
});

问题在于select事件似乎更多地被设计为预处理事件。您可以实现自己的自定义选择逻辑和/或通过从方法返回false来取消默认逻辑。您还可以确保在提交表单之前填充输入

someInput.autocomplete({
    source: selector.php,
    select: function (event, ui) {
         $("#search").val(ui.item.value);
         $("#searchForm").submit();
    }
});

我将此作为评论发布,但我认为它真的应该成为自己的答案。这其实是一个很容易陷入困境的问题


虽然Muhammad认为select函数是“预处理器”是正确的,但通过指定一个,可以删除默认的选择行为,即实际填充选定输入的字段。如果您定义自己的选择处理程序,请确保在提交表单之前填充该字段,或者执行某种prototype.apply操作。

我将此作为注释发布,但我认为它确实应该是自己的答案。这其实是一个很容易陷入困境的问题

虽然Muhammad认为select函数是“预处理器”是正确的,但通过指定一个,可以删除默认的选择行为,即实际填充选定输入的字段。如果您定义自己的选择处理程序,请确保在提交表单之前填充该字段,或者执行某种prototype.apply操作。

也许您希望设置$search.valui.item.value;在你提交之前?在StackOverflow中的另一个帖子上。也许您需要设置$search.valui.item.value;在你提交之前?在StackOverflow的其他帖子上。