0

我正在努力让功能延迟 3 秒.. 这是在图像上 -

 function base64_tofield() {

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

             document.form.submit();
           };

我试过了:

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

无济于事。表单只是在没有 3 秒延迟的情况下提交 - 有什么想法吗?我需要“阻止”表格还是什么?

谢谢!

图片代码:

<img id="btn1" onclick="base64_tofield()">
4

4 回答 4

4

现场演示:警报将在 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();
};
于 2013-10-21T13:31:24.730 回答
1

您可以像这样使用超时调用该函数

setTimeout(base64_tofield, 3000);
于 2013-10-21T13:25:31.777 回答
1

“我需要'阻止'表格还是什么?”

嗯,是的,这听起来像是一个主意。现在,您base64_tofield()无需使用 jquery 即可直接定义您的函数。有什么理由吗?

在 jQuery 中添加了 event 参数,它允许您执行event.preventDefault()

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

不确定您的图像是如何添加到页面中的,但是 css 类而不是 id 和/或.on()在这里也可以提供帮助。

于 2013-10-21T13:31:28.773 回答
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's triggered:
clearTimeout(timeoutID);

编辑:我刚刚读到您的表单提交没有 3 秒延迟。您应该禁止对事件的默认操作:

$("form").submit(function(e) {
    e.preventDefault();
    //do other stuff
}
于 2013-10-21T13:33:29.993 回答