使用 JavaScript 和 Razor 动态添加/删除输入字段

时间:2021-04-23 01:41:08

标签: javascript jquery asp.net-mvc bootstrap-4

我有这段代码使用了 Bootstrap 和 Razor,这是一个验证空字段的动态表单。代码是:

<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="~/Scripts/jquery-3.3.1.slim.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.js"></script>

<link href="~/Content/css/materialize.css" rel="stylesheet" />
<link href="~/Content/css/bootstrap4.0.css" rel="stylesheet" />
<link href="~/Content/css/estilos.css" rel="stylesheet" />
<link href="~/Content/css/custom.css" rel="stylesheet" />

@{
    Html.EnableClientValidation(true);
    Html.EnableUnobtrusiveJavaScript(true);
}

<script type="text/html" id="htmlCalificacionSeguridad">
    <td>
        <div class="form-group">
            @Html.TextBoxFor(model => model.Url,
                new { htmlAttributes = new { @class = "form-control", type = "url" } })
            @Html.ValidationMessageFor(model => model.Url, null, new { @class = "text-danger" })
        </div>
    </td>
    <td>
        <a class="delete" title=@Recursos.Lenguaje.Eliminar data-toggle="tooltip" id="btnEliminarCalificacionSeguridad">
            <i class="material-icons">&#xE872;</i>
        </a>
    </td>
</script>

<script type="text/javascript">

    $(document).ready(function () {
        $("#btnAdicionarCalificacionSeguridad").click(function () {
            var index = $("#tablaCalificacionSeguridad tbody tr:last-child").index();
            var htmlCalificacionSeguridad = document.getElementById('htmlCalificacionSeguridad').innerHTML;
            var row = '<tr>' + htmlCalificacionSeguridad + '</tr>';
            $("#tablaCalificacionSeguridad").append(row);
        });

        $(document).on("click", "#btnEliminarCalificacionSeguridad", function () {
            var filasDeTabla = $('#tablaCalificacionSeguridad tr').length;
            if (filasDeTabla > 2) {
                $(this).parents("tr").remove();
            }
        });

        function InsertarHtmlCalificacionSeguridad() {
            var htmlCalificacionSeguridad = document.getElementById('htmlCalificacionSeguridad').innerHTML;
            $("#trParaCrearCalificacionSeguridad").append(htmlCalificacionSeguridad);
        }

        @if (Model.calificacionSeguridad.ListaCalificacionSeguridad.Count == 0)
        {
            @:InsertarHtmlCalificacionSeguridad();
        }
    });
</script>

<!DOCTYPE html>
<html>
<head>
    <title>@Recursos.Lenguaje.CalificaciónSeguridad</title>
</head>
<body>
    <div class="ig-header">
        <h3 class="v-titulo">@Recursos.Lenguaje.CalificaciónSeguridad</h3>
        @using (Html.BeginForm("Crear", "CalificacionSeguridad", FormMethod.Post, new { @id = "formularioCrearCalificacionSeguridad", @class = "formularioCrearCalificacionSeguridad", @name = "formularioCrearCalificacionSeguridad" }))
        {

            <div class="v-formulario">
                <div class="v-selector">
                    <div class="table-wrapper">
                        <table class="table table-bordered" id="tablaCalificacionSeguridad">
                            <caption style="visibility:hidden">Calificación Seguridad</caption>
                            <thead>
                                <tr>
                                    <th id=""> @Recursos.Lenguaje.Url</th>
                                </tr>
                            </thead>
                            <tbody>
                                @if (Model.calificacionSeguridad.ListaCalificacionSeguridad.Count > 0)
                                {
                                    foreach (var itemCalificacionSeguridad in Model.calificacionSeguridad.ListaCalificacionSeguridad)
                                    {
                                        <tr>
                                            <td>
                                                <div class="form-group">
                                                    @Html.Hidden("itemUrl",
                                                        Model.Url = itemCalificacionSeguridad.Url)
                                                    @Html.TextBoxFor(model => model.Url,
                                                        new { htmlAttributes = new { @class = "form-control", @type = "url" } })
                                                    @Html.ValidationMessageFor(model => model.Url, null, new { @class = "text-danger" })
                                                </div>
                                            </td>
                                            <td>
                                                <a class="delete" title=@Recursos.Lenguaje.Eliminar data-toggle="tooltip"
                                                   id="btnEliminarCalificacionSeguridad">
                                                    <i class="material-icons" aria-hidden="true">&#xE872;</i>
                                                </a>
                                            </td>
                                        </tr>
                                    }
                                }
                                else
                                {
                                    <tr id="trParaCrearCalificacionSeguridad">
                                    </tr>
                                }
                            </tbody>
                        </table>
                        <div class="col-md-2 offset-md-10">
                            <button type="button" class="btn btn-info add-new" id="btnAdicionarCalificacionSeguridad"> @Recursos.Lenguaje.Adicionar</button>
                        </div>
                    </div>

                    <div class="row">
                        <div class="col-md-4 offset-md-8">
                            <div class="v-formulariobotones">
                                <div class="row">
                                    <div class="col-md-6">
                                        <a class="v-btn-segundario v-btn" data-dismiss="modal" aria-label="Close"
                                           href="@Url.Action("Editar", "Solucion",
                                                new {
                                                    id = Model.IdSolucion, vista = "_FormularioCreacionEdicion"
                                                })">
                                            @Recursos.Lenguaje.Cancelar
                                        </a>
                                    </div>

                                    <div class="col-md-6">
                                        <button class="v-btn-principal v-btn" type="submit">
                                            @Recursos.Lenguaje.Aceptar
                                        </button>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        }
    </div>

    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
        @Scripts.Render("~/bundles/custom-validator")
    }

</body>
</html>

但它不会验证动态表单中的所有字段(此代码版本仅验证一个字段)。它只验证第一行,当添加另一行时,它不验证空字段。 我该如何解决?

Error validate

0 个答案:

没有答案
相关问题