检查是否在MVC C#和jQuery [duplicate]中提交表单之前选中了复选框
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查是否在MVC C#和jQuery [duplicate]中提交表单之前选中了复选框相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
起初我有这个MVC视图,显示数据库中的特定记录列表,这是代码,你可以看到有一个复选框列
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@html.DisplayFor(modelItem => item.numero_documento)
</td>
<td>
@Html.DisplayFor(modelItem => item.nombre_accion_formativa)
</td>
<td>
@Html.DisplayFor(modelItem => item.nombre_empresa)
</td>
<td>
<input type="checkbox" name="code" value="@item.numero_documento" +"a" />
</td>
</tr>
}
</tbody>
当按下提交按钮时,它会进行验证,必须至少检查一个复选框,如下所示
$("#btn-agrupar").click(function (e) {
if ($("input[type='checkbox']").is(':checked') === true)
$("#FormAgrupar").submit();
else {
if (e.preventDefault) {
e.preventDefault();
$("#mostrarmodal").modal("show");
}
else {
e.returnValue = false;
$("#mostrarmodal").modal("show");
}
}
});
并且以前工作但是现在我必须添加另一个复选框列并使用jQuery将特定控制器发送到表单中的信息,这是视图的代码
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.numero_documento)
</td>
<td>
@Html.DisplayFor(modelItem => item.nombre_accion_formativa)
</td>
<td>
@Html.DisplayFor(modelItem => item.nombre_empresa)
</td>
<td>
<input type="checkbox" name="delete" value="@item.numero_documento" +"a" />
</td>
<td>
<input type="checkbox" name="code" value="@item.numero_documento" +"a" />
</td>
</tr>
}
</tbody>
这是我的jQuery的代码,问题是现在它没有验证是否至少检查了一个复选框没有复选框列,你能帮助我并告诉我这个问题吗?
$("#btn-agrupar").click(function () {
if ($("input[type='checkbox']").is(':checked') === true) {
var form = $("#FormAgrupar");
form.attr("action", "@Url.Action("RealizarAgrupacion","Home")");
form.submit();
}
else {
if (e.preventDefault) {
e.preventDefault();
$("#mostrarmodal").modal("show");
}
else {
e.returnValue = false;
$("#mostrarmodal").modal("show");
}
}
});
$("#btn-eliminar").click(function () {
if ($("input[type='checkbox']").is(':checked') === true) {
var form = $("#FormAgrupar");
form.attr("action", "@Url.Action("Index","Contact")");
form.submit();
}
else {
if (e.preventDefault) {
e.preventDefault();
$("#mostrarmodal").modal("show");
}
else {
e.returnValue = false;
$("#mostrarmodal").modal("show");
}
}
});
这是我表单中按钮的代码
<input type="button" value="Cancelar" id="btn-cancelar" class="btn btn-danger" />
<input type="button" value="Eliminar Solicitudes" id="btn-eliminar" class="btn btn-danger" />
<input type="button" value="Agrupar Solicitudes" id="btn-agrupar" class="btn btn-primary pull-right" />
如果我正确地理解了您的问题,那么您在区分这两个复选框时似乎存在问题。您可以尝试使用它的名称来引用该复选框并查看它有帮助。
例如:
if ($("input[name='delete']").is(':checked') === true) {
//Do something
}
if ($("input[name='code']").is(':checked') === true) {
//Do something
}
要检查视图中的所有复选框,请使用prop功能
$('input:checkbox').prop('checked', true);
看起来你错过了e
事件参数
$("#btn-agrupar").click(function () ...
应该:
$("#btn-agrupar").click(function (e) ...
似乎两个复选框列都没有任何区别。您可以指定一些html属性,如aria-describedby属性。例如,对于第一个Checkbox aria-describedby =“Delete”,对于第二个aria-describedby =“code”,如下所示
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.numero_documento)
</td>
<td>
@Html.DisplayFor(modelItem => item.nombre_accion_formativa)
</td>
<td>
@Html.DisplayFor(modelItem => item.nombre_empresa)
</td>
<td>
<input type="checkbox" name="delete" aria-describedby="Delete" value="@item.numero_documento" +"a" />
</td>
<td>
<input type="checkbox" name="code" aria-describedby="Code" value="@item.numero_documento" +"a" />
</td>
</tr>
}
</tbody>
并且最好检查被检查的复选框的长度,因为您说可以检查至少一个复选框意味着所有都不是必须检查。在这种情况下,尝试更改代码如下。
$("#btn-agrupar").click(function (e) {
if ($("input[aria-describedby='Delete']").is(':checked').length) {
var form = $("#FormAgrupar");
form.attr("action", "@Url.Action("RealizarAgrupacion","Home")");
form.submit();
}
else {
if (e.preventDefault) {
e.preventDefault();
$("#mostrarmodal").modal("show");
}
else {
e.returnValue = false;
$("#mostrarmodal").modal("show");
}
}
});
如果以上代码工作,则更改按钮单击代码中的代码。
以上是关于检查是否在MVC C#和jQuery [duplicate]中提交表单之前选中了复选框的主要内容,如果未能解决你的问题,请参考以下文章
使用MVC检查至少一个自动生成jquery datatable复选框
当表单在 ASP.NET MVC 5 应用程序中有效时触发 jQuery 函数