我在Jquery中创建了一个搜索代码,我想要它来链接"如果用户输入(当输入城市的全名时),他正在键入的城市用户,如果他点击结果栏,我也希望它接受他。
我有这个代码,当我试图将"点击输入"功能,不会起作用。
已编辑:现在它会将我重定向到我在Json文件中的最后一个城市,而不是将我重定向到我正在打字的城市
$(document).ready(function(){
$.ajaxSetup({ cache: false });
$('#search_text').keyup(function(){
$('#result1').html('');
$('#state').val('');
var searchField = $('#search_text').val();
var expression = new RegExp(searchField, "i");
$.getJSON('data.json', function(data) {
$.each(data, function(key, value){
if (value.name.search(expression) != -1 || value.location.search(expression) != -1)
{
$('#result1').append('<li class="list-group-item "> <a href="'+value.link+'"> '+value.name+' | <span class="text-muted">'+value.location+'</span></li> </a>');
}
$('#search_text').keydown(function(e) {
if (e.which === 13) {
window.location.href = value.link;
}
});
});
});
});
$('#result1').on('click', 'li', function() {
var click_text = $(this).text().split('|');
$('#search_text').val($.trim(click_text[0]));
$("#result1").html('');
});
});
答案 0 :(得分:0)
你的keydown监听器是否必须在getJSON和.each循环中? 这也导致它每次都通过循环附加。如果你必须将它放在循环内(看起来不需要它在那里),请改用它:
$( “#SEARCH_TEXT”)。解除绑定( 'KEYDOWN')。KEYDOWN(...)
尝试将其置于循环外部,看看接下来会发生什么。一些console.log消息也可以帮助查看事件是否有效。