Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用e.preventDefault()后提交表单;_Javascript_Jquery_Forms - Fatal编程技术网

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

Javascript 使用e.preventDefault()后提交表单;,javascript,jquery,forms,Javascript,Jquery,Forms,我有一个表单,我正在停止使用e.preventDefault()提交。(我也尝试过返回false) 我会使用以下代码手动告诉表单在短时间延迟后提交: $('form').delay(2000).submit(); 不幸的是,e.preventDefault()似乎禁止表单提交,即使它使用submit()函数显式提交 你知道我该如何结合这些意图吗?我想在加载屏幕上显示几秒钟 谢谢 试试这个 $("form").on('submit.blocker', function (e) { set

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

我会使用以下代码手动告诉表单在短时间延迟后提交:

$('form').delay(2000).submit();
不幸的是,e.preventDefault()似乎禁止表单提交,即使它使用
submit()
函数显式提交

你知道我该如何结合这些意图吗?我想在加载屏幕上显示几秒钟

谢谢

试试这个

$("form").on('submit.blocker', function (e) {
    setTimeout(function () {
        $("form").off('submit.blocker').trigger('submit');
    }, 2000);
    e.preventDefault();
});
<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>

$(文档).ready(函数()
{
var-okToSubmit=false;
$('form')。提交(函数(e)
{
如果(!okToSubmit)
{
e、 预防默认值();
var$form=$(此);
setTimeout(函数()
{
okToSubmit=真;
$form.submit();
}, 2000);
}
});
});

上面的代码已经过测试。

您可能想试试这个,它对我有用:

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

六羟甲基三聚氰胺六甲醚。。仍然不适合我(使用Chrome,如果有必要的话)。即使是最基本的实现,它也只有在我点击两次按钮时才会提交(因为
off('submit')
会分离原始处理程序)。知道为什么吗?@ChrisNolet用一个可能的解决方案更新了我的答案:命名事件处理程序的名称,这样只有这个特定的事件处理程序是未绑定的。。。好吧,那还是不行。但有趣的是,即使是最基本的实现:
$('#myform').submit()不起作用,但是
$('.submit')。单击()
起作用!所以问题在于这一点,而不是e.preventDefault()代码。我不知道为什么会这样。你应该把代码的相关部分发布出来,我会看看我是否能帮所有人解决这个问题。jQuery中存在一个错误:如果将提交按钮的id设置为“提交”,则
$.submit()
将停止工作。问题解决了!谢谢你的时间和回答!现在效果很好。我认为
delay()
只用于效果,而不是事件。
<form name="demo" action="111" onSubmit="fun();return false">
<input type="text" name="name1" />
<input type="submit" />
</form>
fun()
{
var x= document.forms["demo"];
setTimeout(x.submit(),2000);//time in milliseconds
}