使用e.preventDefault()后提交表单;

时间:2013-02-14 01:59:33

标签: javascript jquery forms

我有一个表单,我停止使用e.preventDefault()提交。 (我也尝试过返回false)。

我会在短暂延迟后手动告诉表单提交,使用代码:

$('form').delay(2000).submit();

不幸的是,e.preventDefault()似乎禁止提交表单,即使它是使用submit()函数明确提交的。

知道如何将这些意图结合起来吗?我想在几秒钟内显示加载屏幕。

谢谢!

4 个答案:

答案 0 :(得分:2)

$("form").on('submit.blocker', function (e) {
    setTimeout(function () {
        $("form").off('submit.blocker').trigger('submit');
    }, 2000);
    e.preventDefault();
});

答案 1 :(得分:2)

试试这个。

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
    $(document).ready(function ()
    {
        var okToSubmit = false;
        $('form').submit(function (e)
        {
            if ( ! okToSubmit)
            {
                e.preventDefault();

                var $form = $(this);
                setTimeout(function ()
                {
                    okToSubmit = true;
                    $form.submit();
                }, 2000);
            }
        });
    });
</script>
<form action="somewhere">
    <input type="text" name="something" />
    <input type="submit" />
</form>

以上代码经过测试。

答案 2 :(得分:1)

$('form').on('submit', function(e) {
    if (!e.isTrigger) {
        setTimeout(function() {
            $("form").trigger('submit');
        }, 2000);
        e.preventDefault();
    }
});

答案 3 :(得分:0)

您可能想尝试一下这对我有用:

<form name="demo" action="111" onSubmit="fun();return false">
<input type="text" name="name1" />
<input type="submit" />
</form>

并在javascript中

fun()
{
var x= document.forms["demo"];
setTimeout(x.submit(),2000);//time in milliseconds
}