使用自动完成输入进行Jquery搜索

使用自动完成输入进行Jquery搜索,jquery,jquery-ui,Jquery,Jquery Ui,我有一些JQuery,它工作得很好。它加载所有的自动完成值,单击这些值后,它们将加载执行所有搜索的searchdata.php。这很有效 我不明白的是,如果用户决定不想选择一个自动完成值,而是按enter键,我如何让它在按enter键时对搜索输入中的值执行searchdata.php而不重新加载页面?我试过绑定和生存,但无法让它工作 <script type="text/javascript"> $(document).ready(function() { var availabl

我有一些JQuery,它工作得很好。它加载所有的自动完成值,单击这些值后,它们将加载执行所有搜索的searchdata.php。这很有效

我不明白的是,如果用户决定不想选择一个自动完成值,而是按enter键,我如何让它在按enter键时对搜索输入中的值执行searchdata.php而不重新加载页面?我试过绑定和生存,但无法让它工作

<script type="text/javascript">
$(document).ready(function() {

var availableTags = <?php echo json_encode($findrow);?>;

  $("#search_input").watermark("Begin Typing to Search");
  $('#searchresultdata').append(sendSelected);

    $("#search_input").autocomplete({
        source: availableTags,
        select: function(event, ui) {
          sendSelected(ui.item.value);
          }
        });

function sendSelected(_val){
    var search_input = _val;
    if (search_input =='') search_input ='*';
    var dataString = 'keyword='+search_input;

    if (search_input.length > 2 || search_input=='*') {
       $.ajax({
            type: "GET",
            url: "core/functions/searchdata.php",
            data: dataString,
            success: function(server_response) {
                $('#searchresultdata').empty();
                $('#searchresultdata').append(server_response);
                $('span#category_title').html(search_input);
            }
        });
    }
}
});
</script>

$(文档).ready(函数(){
var availableTags=;
$(“#搜索输入”)。水印(“开始键入以搜索”);
$(“#searchresultdata”).append(sendSelected);
$(“#搜索输入”)。自动完成({
资料来源:availableTags,
选择:功能(事件、用户界面){
sendSelected(ui.item.value);
}
});
函数sendSelected(_val){
var搜索\输入=\ val;
如果(搜索输入=“”)搜索输入=“”*”;
var dataString='关键字='+搜索输入;
if(search_input.length>2 || search_input=='*')){
$.ajax({
键入:“获取”,
url:“core/functions/searchdata.php”,
数据:dataString,
成功:功能(服务器响应){
$('#searchresultdata').empty();
$('searchresultdata')。追加(服务器响应);
$('span#category_title').html(搜索输入);
}
});
}
}
});

您可以在操作上使用
event.preventDefault()
,它不会提交页面,您只需确保在需要时打开和关闭它即可


啊,谢谢,我只是试着去尝试,但是它包含在autocomplete语句中。有没有办法在他们按enter键时关闭自动完成框,这样它就不会覆盖我的结果?@K20GH当然有;请参阅我的编辑。添加
$(this).autocomplete('close')
以触发close方法。可能重复-same,但改用select事件(它们应具有相同的处理程序)
$("#search_input").keypress(function(e) {
  if(e.keyCode == 13)
     {
         e.preventDefault();
         sendSelected(this.value);
         $(this).autocomplete('close');
     }
});
$("#search_input").on('keyup', function(event) {
  if(event.which == 13)  // event.which detect the code for keypress in jQuery
     {
         event.preventDefault();
         sendSelected(this.value);
     }
});