Случайные всегда возвращают одну и ту же последовательность. Он используется для перестановки массивов и других операций в качестве перестановок.
Чтобы получить разные последовательности, необходимо инициализировать последовательность в некотором положении, называемом «семя».
RandomSting получает случайное число в позиции i (seed = -229985452) «случайной» последовательности. Затем использует код ASCII для следующих 27 символов в последовательности после начальной позиции, пока это значение не станет равным 0. Это вернет "привет". Та же операция сделана для «мира».
Я думаю, что код не работает ни для каких других слов. Парень, который запрограммировал это, очень хорошо знает случайную последовательность.
Это очень крутой выродок!
Легко, используя setTimeout
. Конечно, вы хотите, чтобы одновременно запускался только один таймер, поэтому важно использовать clearTimeout
в начале функции ...
$(function() {
var timer;
$("#searchMe").keyup(function() {
clearTimeout(timer);
var ms = 200; // milliseconds
var val = this.value;
timer = setTimeout(function() {
lookup(val);
}, ms);
});
});
1 решение в псевдокоде:
OnKeyPress()
txt = getTxt
sleep(200)
newTxt = getTxt
if (txt == newTxt) // nothing has been typed so do something
run my thing
Вам действительно стоит обратить внимание на использование плагина jQuery автозаполнения . Я считаю этот плагин очень полезным, и он уже делает то, что вам нужно. Обратите особое внимание на параметр задержки , который вы можете настроить, чтобы изменить время ожидания плагина после нажатия клавиши для запуска.
Наибольший успех я обнаружил при присоединении события к входам keypress, keydown и keyup. Кажется, что Safari / FireFox / IE обрабатывают специальные нажатия клавиш (удаление, возврат и т. Д.) Немного по-другому, но использование всех событий вместе, кажется, покрывает это. Однако единственный способ запустить все события - это использовать setTimeout, чтобы при запуске всех событий он просто сбрасывал таймер, и в конечном итоге обратный вызов выполнялся только один раз.
var delay = 200;
var search_timer = null;
$("#searchMe").keydown(function(e) {
if(search_timer) {
clearTimeout(search_timer);
}
search_timer = setTimeout(lookup, delay);
});
$("#searchMe").keypress(function(e) {
if(search_timer) {
clearTimeout(search_timer);
}
search_timer = setTimeout(lookup, delay);
});
$("#searchMe").keyup(function(e) {
if(search_timer) {
clearTimeout(search_timer);
}
search_timer = setTimeout(lookup, delay);
});
this one is happy
$(document).ready(function(){
$("#searchMe").keyup(function () {
try{window.clearTimeout(timeoutID);}catch(e){}
timeoutID = window.setTimeout(run, 2000); //delay
function run()
{ //dowhatev
var text = $("#searchMe").val();
//$("#showit").html(text);
}
});
});