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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在自动完成输入之前,Jquery自动完成提交表单相关的知识,希望对你有一定的参考价值。

这是我的代码...问题是,当我点击自动完成建议时,它只提交我写入输入的信息而不是选择的自动填充的单词。我想这是因为表单提交得更快,然后输入自动完成。但我该如何解决呢?

    <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);
答案

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

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

我发布这个评论作为评论,但我认为它确实应该是它自己的答案。这实际上很容易陷入困境。

虽然穆罕默德是正确的,选择功能是一个'预处理器',通过指定一个你删除默认选择行为(即,实际填充选定的输入的字段)。如果您定义自己的select处理程序,请确保在提交表单之前填充该字段,或者执行某种prototype.apply()事务。

以上是关于在自动完成输入之前,Jquery自动完成提交表单的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 自动完成:事件选择

使用 jQuery Mobile 1.4.2 远程自动完成列表视图提交表单?

通过在 struts-dojo 自动完成上按 enter 键来防止表单提交

在自动完成输入上写入时显示/隐藏按钮

谷歌自动完成 - 输入选择

不正确的自动完成输入样式;