Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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 如何避免多次提交表单?_Javascript_Asp.net_Asp.net Mvc_Forms_Asp.net Mvc Validation - Fatal编程技术网

Javascript 如何避免多次提交表单?

Javascript 如何避免多次提交表单?,javascript,asp.net,asp.net-mvc,forms,asp.net-mvc-validation,Javascript,Asp.net,Asp.net Mvc,Forms,Asp.net Mvc Validation,我们有以下注册页面代码 @using (Html.BeginForm(MVC.Account.Register(Model.ReturnUrl), FormMethod.Post, new { @id = "register-form" })) { <div class="control-group clear"> @Html.LabelFor(m => m.Email) @Html.TextBoxFor(m => m.Email,

我们有以下注册页面代码

@using (Html.BeginForm(MVC.Account.Register(Model.ReturnUrl), FormMethod.Post, new { @id = "register-form" }))
{
    <div class="control-group clear">
        @Html.LabelFor(m => m.Email)
        @Html.TextBoxFor(m => m.Email, new { type = "email", @class = "forbid-lt-gt" })
        <span class="hint raise">Will be user as Username.</span>
        <div class="error">@Html.ValidationMessageFor(m => m.Email)</div>
    </div>
    <div class="control-group clear">
        @Html.LabelFor(m => m.Password)
        @Html.PasswordFor(m => m.Password)
        <span class="hint raise">Length between 6 and 10 characters</span>
        <div class="error">@Html.ValidationMessageFor(m => m.Password)</div>
    </div>
    <div class="control-group clear">
        @Html.LabelFor(m => m.ConfirmPassword)
        @Html.PasswordFor(m => m.ConfirmPassword)
        <div class="error">@Html.ValidationMessageFor(m => m.ConfirmPassword)</div>
    </div>

    <div class="control-group action">
        <button class="btn primary" type="submit">
            <span>Sign up</span>
        </button>
    </div>
    <div class="clear"></div>
}

通常一切正常,但有时它不起作用,用户在按钮上单击几次后,表单可以多次发送到服务器。早些时候,我们有一个问题,在IE表单中点击提交按钮后,两次被发送到服务器。现在我们没有这个问题,但它没有被修复。

live
已经死了。死去的它在2.7中被弃用,在2.9中被删除。死了

我将采用这种方法:

var serializedData;

$(function () {
    $('form').submit(function () {
        var tempSerializedData = $(this).serialize();
        if (tempSerializedData != serializedData) 
            serializedData = tempSerializedData;
        else 
            return false;

    });
});

live
已死亡。死去的它在2.7中被弃用,在2.9中被删除。死了

我将采用这种方法:

var serializedData;

$(function () {
    $('form').submit(function () {
        var tempSerializedData = $(this).serialize();
        if (tempSerializedData != serializedData) 
            serializedData = tempSerializedData;
        else 
            return false;

    });
});

试试这个不确定但这对我有用

$('form').one('submit', function () {
        $(this).find('button[type="submit"]').attr('disabled', 'disabled');
        setTimeout(function () {
              $(this).find('button[type="submit"]').attr('disabled', 'disabled');
         }, 20);
    });

试试这个不确定但这对我有用

$('form').one('submit', function () {
        $(this).find('button[type="submit"]').attr('disabled', 'disabled');
        setTimeout(function () {
              $(this).find('button[type="submit"]').attr('disabled', 'disabled');
         }, 20);
    });

感谢您发布尽可能多的信息。但唯一相关的信息是您的javascript,因为这是一个已知的问题,我删除了所有不相关的代码。好的,但我认为问题可能存在于jquery的两个库中。我不确定您究竟如何使用这两个版本。不管它有多么可怕,如果您使用jQuery>1.7,您应该停止使用
live
,如果您使用jQuery>1.9,您必须停止使用
live
。感谢您发布尽可能多的信息。但唯一相关的信息是您的javascript,因为这是一个已知的问题,我删除了所有不相关的代码。好的,但我认为问题可能存在于jquery的两个库中。我不确定您究竟如何使用这两个版本。不管它有多么可怕,如果你使用jQuery>1.7你应该停止使用
live
,如果你使用jQuery>1.9你必须停止使用
live
@max,我不知道你的意思。@max,我不知道你的意思。