2013-06-02 4 views
0

У меня есть следующий код JQuery помещается против ввода текстового поля панели поиска:JQuery KeyUp не заселять результаты, пока пространство не будет выполнен

$(document).ready(function(){ 
    $("#q").keyup(function(event){ 
     event.preventDefault(); 
     $.post("newsearch.php",{q:$("#q").val()}, function(data){ 
     $("#inboxHolder").html(data);   
     }); 
    }); 
});  

его немного glichy. Результаты заполняются правильно, но, например, в некоторых случаях я должен выполнить пробел после ввода моего запроса для заполнения результатов.

Любая обратная связь будет принята с благодарностью.

+0

Можете ли вы воспроизвести скрипку? – PSL

+0

Не то, о чем вы просите, но действительно ли вы хотите опубликовать сообщение о событии? Для любой полноправной машинистки, которая составляет пять сообщений в секунду. Как правило, немного задерживается ... – nnnnnn

+0

Как добавить задержку с помощью этого: http://api.jquery.com/delay/ – jkushner

ответ

0

Я думаю, что вопрос вы спрашиваете, jQuery - keydown/keypress /keyup ENTERKEY detection

Try и сведенью как для keyup, keydown и enter.

$(document).ready(function(){ 
    get_key_press(); 
}); 

function get_key_press() 
{ 
    $("#q").keyup(function(e){ 
     handle_key_press(e); 
    }); 
    $("#q").keydown(function(e){ 
     handle_key_press(e); 
    }); 
} 

function do_search(search_string) 
{ 
    $.post("newsearch.php",{q:search_string}, function(data){ 
     $("#inboxHolder").html(data); 
     can_search = true; 
    }); 
} 

//simple concurrency flag 
var can_search = true; 

function handle_key_press(e) 
{ 
    if(can_search) 
    { 
     var code = e.which; // recommended to use e.which, it's normalized across browsers 
     if(code==13)e.preventDefault(); 
     if(code==32||code==13||code==188||code==186) 
     { 
      can_search = false; 
      do_search($("#q").val()); 
     } 
    } 
} 

Если вы были после того, как список keycodes в отношении к e.which, вы можете обратиться к этой resource.

+1

_ «Попробуй и включись как для keyup, keydown, так и для ввода.» _ - Хорошо, так как ваша учетная запись кода для ключа _down_? Почему вводить материю - считаете ли вы, что вход находится внутри формы, и в этом случае вам нужно будет предотвратить действие ключевого _down_ по умолчанию, а не ключ по умолчанию _up_, если вы хотите остановить отправку формы по умолчанию. – nnnnnn

+0

Я не особо уверен ... но из опыта написания моего автозаполнения на C# я заметил, что лучше было учитывать оба действия клавиатуры, чтобы сделать ввод более отзывчивым. Но спасибо за предложения (также обновил ответ на учет для 'keydown'). – Killrawr

Смежные вопросы