Jquery搜索输入时使用自动完成功能

时间:2012-05-11 13:54:45

标签: jquery jquery-ui

我有一些JQuery工作正常。它加载所有自动完成值,并在单击它们时加载searchdata.php,执行所有搜索。这很有效。

我无法弄清楚的是,如果用户决定他们不想选择自动完成值而是点击输入,我该如何让它对搜索中的值执行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>

3 个答案:

答案 0 :(得分:7)

$("#search_input").keypress(function(e) {
  if(e.keyCode == 13)
     {
         e.preventDefault();
         sendSelected(this.value);
         $(this).autocomplete('close');
     }
});

答案 1 :(得分:3)

$("#search_input").on('keyup', function(event) {
  if(event.which == 13)  // event.which detect the code for keypress in jQuery
     {
         event.preventDefault();
         sendSelected(this.value);
     }
});

答案 2 :(得分:2)

你可以在动作中使用event.preventDefault()并且它不会提交页面,你只需要确保在你需要时打开和关闭它

http://api.jquery.com/event.preventDefault/