im изо всех сил пытается заставить функцию задерживаться на 3 секунды.. это на изображении -
function base64_tofield() {
$('#formfield').val($.scriptcam.getFrameAsBase64());
document.form.submit();
};
я пробовал:
setTimeout( function () {
base64_tofield();
}, 3000);
но безрезультатно. форма просто отправляется без 3-секундной задержки - любые идеи? мне нужно "блокировать" форму или что?
благодарю!
Код изображения:
<img id="btn1" onclick="base64_tofield()">
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();
};
"Мне нужно" блокировать "форму или что?"
Да, это звучит как идея. Прямо сейчас вы определяете свою функцию 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()
.
Вы можете использовать для этого 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
}
Вы можете вызвать функцию с таймаутом, подобным этому
setTimeout(base64_tofield, 3000);