ASP.NET 使用 jQuery.validate 禁用表单字段时的核心视图模型
ASP.NET Core view model when disabling form fields with jQuery.validate
我有一个 HTML 表单,我希望当用户单击提交按钮时,该按钮和表单中的所有输入元素(主要是文本框)都被禁用,以防止它们更改任何数据,或再次单击该按钮。我在表单上使用 jQuery.validate
,没有不显眼的插件。
表单的标记如下所示(为清楚起见,删除了不相关的标记)...
<form method="post" asp-controller="Home" asp-action="Jim">
<div class="form-group row">
<label for="Name">Your name</label>
<input type="text" id="UserName" name="UserName">
</div>
<div class="form-group row">
<label for="Email">Email</label>
<input type="text" id="Email" name="Email">
</div>
<div class="form-group row">
<div>
<button type="submit">Submit</button>
</div>
</div>
</form>
我有以下 JavaScript 使用 jQuery.validate
...
$("form").validate({
rules: {
UserName: {
required: true,
minlength: 3
},
Email: {
required: true
},
Message: {
required: true
}
},
submitHandler: function(form) {
form.submit();
}
});
这就是页面上的所有 JavaScript。
这很好用。但是,如果我在 submitHandler 函数中添加一行...
submitHandler: function(form) {
$("form input").prop('disabled', true);
form.submit();
}
...然后当提交表单时,Request.Form
是空的,所以我的数据 none 被发送到服务器。
好像和jQuery.validate
有关,好像我把JavaScript完全换成了这个...
$(function() {
$("form").submit(function(form) {
$("form input").prop('disabled', true);
});
});
...然后控件被禁用,我的数据通过正常。这似乎暗示我在 jQuery.validate
.
上做错了什么
有人能解释为什么我在使用 jQuery.validate
时禁用控件时我的数据无法通过吗?
原因是禁用的输入未与 form.Refer 一起提交到 here and here。
您应该使用 readonly
属性而不是 disabled
。 Read-only 字段不能由用户编辑,但仍与表单一起提交。
submitHandler: function (form) {
$("form input").prop('readonly', true);
form.submit();
}
我有一个 HTML 表单,我希望当用户单击提交按钮时,该按钮和表单中的所有输入元素(主要是文本框)都被禁用,以防止它们更改任何数据,或再次单击该按钮。我在表单上使用 jQuery.validate
,没有不显眼的插件。
表单的标记如下所示(为清楚起见,删除了不相关的标记)...
<form method="post" asp-controller="Home" asp-action="Jim">
<div class="form-group row">
<label for="Name">Your name</label>
<input type="text" id="UserName" name="UserName">
</div>
<div class="form-group row">
<label for="Email">Email</label>
<input type="text" id="Email" name="Email">
</div>
<div class="form-group row">
<div>
<button type="submit">Submit</button>
</div>
</div>
</form>
我有以下 JavaScript 使用 jQuery.validate
...
$("form").validate({
rules: {
UserName: {
required: true,
minlength: 3
},
Email: {
required: true
},
Message: {
required: true
}
},
submitHandler: function(form) {
form.submit();
}
});
这就是页面上的所有 JavaScript。
这很好用。但是,如果我在 submitHandler 函数中添加一行...
submitHandler: function(form) {
$("form input").prop('disabled', true);
form.submit();
}
...然后当提交表单时,Request.Form
是空的,所以我的数据 none 被发送到服务器。
好像和jQuery.validate
有关,好像我把JavaScript完全换成了这个...
$(function() {
$("form").submit(function(form) {
$("form input").prop('disabled', true);
});
});
...然后控件被禁用,我的数据通过正常。这似乎暗示我在 jQuery.validate
.
有人能解释为什么我在使用 jQuery.validate
时禁用控件时我的数据无法通过吗?
原因是禁用的输入未与 form.Refer 一起提交到 here and here。
您应该使用 readonly
属性而不是 disabled
。 Read-only 字段不能由用户编辑,但仍与表单一起提交。
submitHandler: function (form) {
$("form input").prop('readonly', true);
form.submit();
}