Задержка JQuery функции / формы отправки

0

im изо всех сил пытается заставить функцию задерживаться на 3 секунды.. это на изображении -

 function base64_tofield() {

            $('#formfield').val($.scriptcam.getFrameAsBase64());

             document.form.submit();
           };

я пробовал:

setTimeout( function () { 
          base64_tofield(); 
           }, 3000);

но безрезультатно. форма просто отправляется без 3-секундной задержки - любые идеи? мне нужно "блокировать" форму или что?

благодарю!

Код изображения:

<img id="btn1" onclick="base64_tofield()">
Теги:
forms
delay

4 ответа

4
Лучший ответ

Live Demo: появится всплывающее окно через 3 секунды.

Попробуй это:

<img id="btn1" onclick="new_fun()">

function new_fun()
{
    setTimeout( function () { 
          base64_tofield(); 
    }, 3000);
}

function base64_tofield() {
    $('#formfield').val($.scriptcam.getFrameAsBase64());
    document.form.submit();
};
1

"Мне нужно" блокировать "форму или что?"

Да, это звучит как идея. Прямо сейчас вы определяете свою функцию base64_tofield() напрямую без использования jquery. Любая причина для этого?

В jQuery добавляется параметр события, который позволяет вам делать event.preventDefault()

$("#btn1").click(function(event){
    // do i need to 'block' the form or what?
    event.preventDefault();
    setTimeout(base64_tofield, 3000);
});

Не знаете, как ваши изображения добавляются на страницу, но здесь может помочь класс css вместо id и/или .on().

1

Вы можете использовать для этого window.setTimeout(). setTimeout возвращает идентификатор timeoutID, который можно использовать для отмены действия до его запуска.

Если вы устанавливаете тайм-аут внутри функции обратного вызова jquery, вы должны перенести вызов целевой функции в анонимную функцию вместо того, чтобы просто вводить имя целевой функции.

var delay = 3000;
var timeoutID = setTimeout(function(){base64_toField();},delay);

//if you need to cancel the function call before it triggered:
clearTimeout(timeoutID);

Изменение: я просто прочитал, что ваша форма отправляется без 3-секундной задержки. вы должны подавить действие по умолчанию для события:

$("form").submit(function(e) {
    e.preventDefault();
    //do other stuff
}
1

Вы можете вызвать функцию с таймаутом, подобным этому

setTimeout(base64_tofield, 3000);
  • 0
    TX - но теперь он отправляет форму каждые 3 секунды, теперь сам по себе кажется ... я помещаю это вне base64_tofield? function base64_tofield () {$ ('# formfield'). val ($. scriptcam.getFrameAsBase64 ()); document.form.submit (); }; setTimeout (base64_tofield, 3000);
  • 0
    Да. Поместите это снаружи, иначе это будет рекурсивным

Ещё вопросы

Сообщество Overcoder
Наверх
Меню