Как я делаю свой живой jQuery поисковым ожиданием секунда прежде, чем выполнить поиск?

Случайные всегда возвращают одну и ту же последовательность. Он используется для перестановки массивов и других операций в качестве перестановок.

Чтобы получить разные последовательности, необходимо инициализировать последовательность в некотором положении, называемом «семя».

RandomSting получает случайное число в позиции i (seed = -229985452) «случайной» последовательности. Затем использует код ASCII для следующих 27 символов в последовательности после начальной позиции, пока это значение не станет равным 0. Это вернет "привет". Та же операция сделана для «мира».

Я думаю, что код не работает ни для каких других слов. Парень, который запрограммировал это, очень хорошо знает случайную последовательность.

Это очень крутой выродок!

18
задан YakovL 13 January 2018 в 12:34
поделиться

5 ответов

Легко, используя setTimeout . Конечно, вы хотите, чтобы одновременно запускался только один таймер, поэтому важно использовать clearTimeout в начале функции ...

$(function() {
  var timer;
  $("#searchMe").keyup(function() {
    clearTimeout(timer);
    var ms = 200; // milliseconds
    var val = this.value;
    timer = setTimeout(function() {
      lookup(val);
    }, ms);
  });
});
52
ответ дан 30 November 2019 в 06:01
поделиться

1 решение в псевдокоде:

OnKeyPress()
    txt = getTxt
    sleep(200)
    newTxt = getTxt
    if (txt == newTxt)  // nothing has been typed so do something
       run my thing
1
ответ дан 30 November 2019 в 06:01
поделиться

Вам действительно стоит обратить внимание на использование плагина jQuery автозаполнения . Я считаю этот плагин очень полезным, и он уже делает то, что вам нужно. Обратите особое внимание на параметр задержки , который вы можете настроить, чтобы изменить время ожидания плагина после нажатия клавиши для запуска.

3
ответ дан 30 November 2019 в 06:01
поделиться

Наибольший успех я обнаружил при присоединении события к входам 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);
});
-1
ответ дан 30 November 2019 в 06:01
поделиться

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);       
  }     
 });   
});
1
ответ дан 30 November 2019 в 06:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: