延迟jquery函数/表单提交

时间:2013-10-21 13:21:07

标签: jquery forms delay

我很难让功能延迟3秒..这是在图像上 -

 function base64_tofield() {

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

             document.form.submit();
           };

我试过了:

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

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

谢谢!

图片代码:

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

4 个答案:

答案 0 :(得分: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 :(得分:1)

你可以用这样的超时来调用函数

setTimeout(base64_tofield, 3000);

答案 2 :(得分:1)

  

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

Euh,是的,这听起来像个主意。现在,您可以直接定义函数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()也可以在这里提供帮助。

答案 3 :(得分: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
}