我正在使用查询自动完成功能来选择我从MySQL数据库检索的成员。这部分代码正常工作。然后,我编写了一个脚本,该脚本获取所选内容的值并将其附加到url并打开它。该脚本可以执行此操作,但是存在问题。
第一个问题是文件加载时,它不等待自动完成文本输入更改,而是在页面加载时执行。我可以点击浏览器上的“后退”按钮,它再次执行,然后我第三次点击“后退”按钮,使其停留在页面上。此时,我可以在文本输入中键入一个字母,并返回选择列表。然后,我可以选择一个,而javascript会附加值,并打开新页面,其中包含所要求的信息。
第二个问题是,我从下拉列表中选择了一个成员后,必须在自动完成更改触发前单击文本输入字段。选择后但离开文本输入之前,如何使其启动?
这是HTML文件:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<script type="text/javascript">
$(function () {$('#theinput').autocomplete({source: 'search.php'});
});
</script>
</head>
<body>
<input type="text" id="theinput" />
<button type="button" onclick="ClearFields();">Clear</button>
<script type="text/javascript">
$(function myFunction () {
$('#theinput').on('autocompletechange change', function () {
location.href = 'dirlist.php?title=' + document.getElementById('theinput').value
}).change();
});
function ClearFields() {document.getElementById("theinput").value = "";}
</script>
</body></html>
答案 0 :(得分:3)
您自己调用了change
函数,是否尝试了不使用?
$(function myFunction () {
$('#theinput').on('autocompletechange change', function () {
location.href = 'dirlist.php?title=' +
document.getElementById('theinput').value
}); // <-- no .change() right here!
});