javascript - 单击时自动完成更新第二个输入框上的相同值
问题描述
有人可以在这里帮助我吗,因为大多数事情看起来都不错,比如从数据库中获取匹配的结果,但是当我点击两个输入框上的值时,会添加相同的自动完成值。
有人可以帮我解决这个问题吗?
这是我的html:
<div class="col-sm-12">
<label class="form-label-outside">From</label>
<div class="form-wrap form-wrap-inline">
<input id="from-input" class="form-input" name="from" type="text">
<div id="from-show-list" class="list-group"></div>
</div>
</div>
<div class="col-sm-12">
<label class="form-label-outside">To</label>
<div class="form-wrap form-wrap-inline">
<input id="to-input" class="form-input" name="to" type="text">
<div id="to-show-list" class="list-group"></div>
</div>
</div>
我的js
<script src="js/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#from-input").keyup(function() {
let searchText = $(this).val();
if (searchText != "") {
$.ajax({
url: "airports.php",
method: "post",
data: {
query: searchText,
},
success: function(response) {
$("#from-show-list").html(response);
},
});
} else {
$("#from-show-list").html("");
}
});
// Set searched text in input field on click of search button
$(document).on("click", "a", function() {
$("#from-input").val($(this).text());
$("#from-show-list").html("");
});
});
$(document).ready(function() {
$("#to-input").keyup(function() {
let searchText = $(this).val();
if (searchText != "") {
$.ajax({
url: "airports.php",
method: "post",
data: {
query: searchText,
},
success: function(response) {
$("#to-show-list").html(response);
},
});
} else {
$("#to-show-list").html("");
}
});
// Set searched text in input field on click of search button
$(document).on("click", "a", function() {
$("#to-input").val($(this).text());
$("#to-show-list").html("");
});
});
</script>
这是php
require_once 'includes/config.php';
if (isset($_POST['query'])) {
$inpText = $_POST['query'];
$sql = 'SELECT * FROM pt_flights_airports WHERE cityName LIKE ? OR name LIKE ? OR code LIKE ?';
$stmt = $db->prepare($sql);
$stmt->execute(array('%'.$inpText.'%','%'.$inpText.'%','%'.$inpText.'%'));
$result = $stmt->fetchAll();
if ($result) {
foreach ($result as $row) {
echo '<a href="#" class="list-group-item list-group-item-action border-1">'.$row['cityName'].' ('.$row['code'].') - <small>'.$row['name'].'</small></a>';
}
} else {
echo '<p class="list-group-item border-1">Airport not listed!</p>';
}
}
感谢你的帮助
解决方案
问题是由于链接上的点击功能而出现的。通过指定包含这些链接的 div 的 id 来定义两组单独的链接。
// Set searched text in input field on click of search button
$(document).on("click", "#from-show-list a", function() {
$("#from-input").val($(this).text());
$("#from-show-list").html("");
});
// Set searched text in input field on click of search button
$(document).on("click", "#to-show-list a", function() {
$("#to-input").val($(this).text());
$("#to-show-list").html("");
});
像这样使用 css 将最大高度应用于结果 div。
<div id="from-show-list" class="list-group" style="max-height: 100px; overflow: auto;"></div>
<div id="to-show-list" class="list-group" style="max-height: 100px; overflow: auto;"></div>
推荐阅读
- vue.js - 使用 CRUD 操作 Vuetify v-data-table:带有动态表单的对话框不适用于 v-model
- javascript - 页面加载时的 Javascript execCommand("copy")
- python - 如何创建帖子?
- python - 如何在 PyQt5 中捕获 libpng 错误错误的自适应滤波器
- java - 每次while/for循环迭代后如何等待一秒钟?
- docker - How do I create my docker image from a forked GITHUB repo?
- sonos - Sonos Cloud Queue GET /version 定期轮询间隔是多少?
- python - 如何在 pytest API 测试中传递用户令牌
- angular - 从嵌套数组json角度获取值
- python - cv2.imwrite 未按预期将图像保存在所需位置