autocomplete.js 994 Bytes
$(function() {
  $('#q').keyup(function() {
    var query = $('#q').val() || "";
    query = query.trim();
    if (!query) {
      return; // typing한 내용이 없으면 종료
    }

    // spinner를 돌리자..
    $('.form').addClass('loading');
    
    $.ajax({
      url: '/suggest',
      data: {q: query},
      success: function(data) {
        // Ajax의 결과를 잘 받았을 때
        // 화면에 받은 결과를 가지고 list를 rendering하고..
        var els = _.map(data, function(name) {
          return '<li>' + name + '</li>';
        });
        $('.suggest-box').html(els.join('\n')).show();

        // li item을 클릭했을 때, text box의 내용을 바꾸고, suggest-box감춤
        $('.suggest-box li').click(function(e) {
          $('#q').val($(e.currentTarget).text());
          $('.suggest-box').hide();
        });
      },
      complete: function() {
        $('.form').removeClass('loading');  // spinner를 정지
      }
    });
  });
});