【发布时间】:2014-09-23 09:18:14
【问题描述】:
我们有以下注册页面代码
@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>
}
和文件formBlocker.js 防止多个按钮点击
$(function() {
$('form').one('submit', function () {
$(this).find('button[type="submit"]').attr('disabled', 'disabled');
});
//Enable submit button if data has changed
$('form').live("input", function () {
$(this).find('button[type="submit"]').removeAttr('disabled');
});
});
通常一切都很好,但有时它不起作用,并且在用户多次单击按钮后,表单可以多次发送到服务器。早期我们遇到的问题是,点击 IE 表单中的提交按钮后,会被发送到服务器两次。现在我们没有这个问题,但它没有得到解决。
【问题讨论】:
-
感谢您发布尽可能多的信息。但唯一相关的信息是您的 javascript,因为这是一个已知问题,我删除了所有不敬的代码。
-
好的,但我认为问题可能出在两个 jquery 库中。
-
我不确定你是如何使用这两个版本的。不管它有多可怕,如果你使用 jQuery > 1.7 你应该停止使用
live,如果你使用 jQuery > 1.9 你必须停止使用live。
标签: javascript asp.net asp.net-mvc forms asp.net-mvc-validation