За последние 24 часа нас посетили 17215 программистов и 1248 роботов. Сейчас ищут 895 программистов ...

Отсрочка выполнения onkeyup

Тема в разделе "JavaScript и AJAX", создана пользователем neuro, 30 май 2007.

  1. neuro

    neuro Активный пользователь

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    на форме есть текстовое поле:
    <input type="text" name="text" onkeyup="func(value)">
    подскажите пожалуйста, как сделать, чтобы onkeyup="func(value)" срабатывал только через 3 секунды после ввода последнего символа?
     
  2. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    по onkeyup (или лучше по onkeypress) запоминать время последнего ввода.
    по setInterval с некоторым промежутком проверять это время, после чего выпонять нужные действия.
     
  3. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    [js]function doLoadUpC(value)
    {
    if (timeout0) clearTimeout(timeout0);
    var launch="func(value)";
    timeout0 = setTimeout(launch, 3000);

    }[/js]
     
  4. neuro

    neuro Активный пользователь

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    спасибо ))) код работает )))
    единственная трабла: когда набираешь в строке, например, "привет", func(value) отрабатывает через 3 секунды после набора последнего символа "т", но вот отрабатывает func(value) столько раз сколько символов в слове "привет".
    Подскажите пожалуйста, как сделать, чтобы func(value) запускалась один раз после набора символа "т" при наборе "привет".
     
  5. Davil

    Davil Guest

    Это уже не onkeyup нужен...
     
  6. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    странно.
    [js]if (timeout0) clearTimeout(timeout0);[/js]
    должно это обрабатывать.
    [js]var timeout0 = null;[/js]
    в зоне window определил заранее? иначе он будет не видеть старый и создавать новый не убивая старый каждый раз.
     
  7. neuro

    neuro Активный пользователь

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    для виндовса определил заранее
    проверил значение переменной timeout0
     
  8. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    это надо ВНЕ функции определять. В зоне window
    Чтобы жило и без нее.
    [js]var timeout0 = null;
    function doLoadUpC(value)
    {[/js]
     
  9. neuro

    neuro Активный пользователь

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    armadillo огромное спасибо! все работает )))))
     
  10. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    можно и внутри:
    HTML:
    1. window.timeout0 = ...