2012-05-11 143 views
3

我有一些JQuery,它工作正常。它加載所有的自動完成值,點擊它們後,它們加載執行所有搜索的searchdata.php。這工作。jquery搜索輸入自動完成

我無法弄清楚的是,如果用戶決定他們不想選擇自動完成值並按回車鍵,我該如何獲取它以執行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> 
+0

[jQuery自動完成觸發器更改事件]的可能重複(http://stackoverflow.com/questions/6431459/jquery-autocomplete-trigger-change-event) - 相同,但使用選擇事件,而不是(他們應該有相同的手ler) – Potatoswatter

回答

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

啊謝謝,我只是想這個,但它包含在autocomplete語句中。有沒有辦法在他們按下回車鍵時關閉自動填充框,以便它不覆蓋我的結果? – K20GH

+1

@ K20GH肯定是;看我的編輯。添加'$(this).autocomplete('close')'來觸發close方法。 – Mathletics

+0

非常感謝:D – K20GH

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); 
    } 
});