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的其他帖子上。