我正在尝试创建一个搜索栏,该搜索栏根据输入的字母发送对提案的请求。 jQuery发送的请求数与输入字母的数量相同。
如果我写“ sa”,则jQuery将发送2个请求。如果我写“ Sa”,则jQuery将发送3个请求(自从我按shift键以来,大字母被计为2个字母。”
代码应按以下说明工作:用户在数据库中写下要查找的内容的名称和代码搜索,并显示所有可能的搜索词。 编辑: 该脚本应发送2个请求:第一个请求将获取所有带有“ sa”的结果。选择结果后。它应该只向数据库发送一个请求以获取其余信息。我的脚本正在做什么:他正在按原样发送第一个请求。第二个请求的发送时间与信件的数量相同。即使只有一个请求就足够
here is also a link to a youtube video which I record to explain the problem
这是我的jQuery代码:
$('.sucherInput').on('keyup', function () {
// ** .sucherInput is the class of the input field
var inputValue = $('.sucherInput').val();
var result = $(".sucherres");
var resultList = $(".sucherres ul");
if (inputValue.length) {
console.log(inputValue);
$.post("action/php/artikelSucher.php", {
name: inputValue
}).done(function(data){
// Display the returned data in browser
//console.log(data);
resultList.html(data);
result.show();
}); //.done
} else{
console.log("empty");
resultList.empty();
result.hide();
}
$(document).on("click", ".sucherres ul li p", function(){
//set the search bar value as same as the clicked <p> tag
$('.sucherInput').val($(this).text());
//clear the Proposals list
$(resultList).empty();
$(result).hide();
//renew the value of the search bar
//since im taking the value which have to be searched in the database from the searchbar
var sucherLastIndex = $('.sucherInput').val();
console.log("Getting data from database: " + sucherLastIndex);
//load the data into the HTML file
$("#updateDiv #info").load("action/php/index-preis-liste.php", {
name: sucherLastIndex
});
});
});
这是HTML代码:
<div class="sucher">
<ul style="width: 100%; margin-bottom: 0;">
<li style="width: 33%;">
<input type="text" class="sucherInput" placeholder="Geben Sie einen Suchbegriff ein">
</li>
</ul>
<div class="sucherres">
<ul>
<!-- ## HERE COMES THE Proposals ## -->
</ul>
</div>
<div id="info">
</div>
答案 0 :(得分:0)
我找到了解决办法**
是通过更改
$(document).on("click", ".sucherres ul li p", function(){
到
$(document).off('click').on("click", ".sucherres ul li p", function(){
只需添加
.off('click')
**