validate remote net mvc form custom attribute asp jquery asp.net-mvc asp.net-mvc-4 jquery-validate unobtrusive-validation

jquery - remote - MVC: Cómo habilitar la validación del lado del cliente en campos ocultos



unobtrusive jquery validation mvc 5 (4)

Justo después de insertar la secuencia de comandos para la validación, configure el ignorar en "":

@section Scripts { @Scripts.Render("~/bundles/jqueryval") <script type="text/javascript"> $.validator.setDefaults({ ignore: "" }); </script> }

@Guiones

<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")"></script> <script src="@Url.Content("~/Scripts/jquery.validate.js")"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"></script>

@Ver

@using (Html.BeginForm("TestModelState", "RandD", FormMethod.Post, new {id="form123" })) { @Html.TextBoxFor(x => x.htmlText, new { style="display:none"})<br /> @Html.ValidationMessageFor(x => x.htmlText) <div> @Html.TextBoxFor(x => x.Uprop1)<br /> @Html.ValidationMessageFor(x => x.Uprop1) </div> <input type="submit" value-="Submit" onclick="abc()" /> }

Lo que he intentado

  1. Reemplazado ignore: ": hidden", con ignore: "" , dentro de validate.js
  2. var validateMeta = $ (''# form123''). validate (); validateMeta.settings.ignore = "";

  3. $.validator.setDefaults({ignore: ""});

  4. $.validator.setDefaults({ ignore: [] });


Me encontré con este mismo problema. Un campo oculto en una página almacenaba una ID de usuario, que se seleccionó de un cuadro de texto con autocompletado. Este ID tenía validación para garantizar que se devolviera un ID distinto de cero. Queríamos incluir esta validación en el lado del cliente.

Por defecto, jQuery validate ignora los campos ocultos, los elementos con ancho y altura cero, aquellos con css muestran: ninguno y cualquier elemento con un padre invisible (usando los mismos criterios).

Sin embargo, la configuración de ignorar puede anularse agregando el siguiente script (lo agregué a mi script de validación personalizado antes de llamar a $ .validator.addMethod ()):

// By default validator ignores hidden fields. // change the setting here to ignore nothing $.validator.setDefaults({ ignore: null });

NOTA: este código no funcionará si se ejecuta dentro del document ready o el método jQuery $(function () {}) .


No estoy seguro de por qué necesita mostrar las validaciones de los campos que el usuario no puede ver o editar. Pero puedes intentar esto. En lugar de display:none , aplique visibility:hidden y height:0 a su campo de entrada.

@using (Html.BeginForm("TestModelState", "RandD", FormMethod.Post, new {id="form123" })) { @Html.TextBoxFor(x => x.htmlText, new { style="visibility:hidden;height:0"})<br /> @Html.ValidationMessageFor(x => x.htmlText) <div> @Html.TextBoxFor(x => x.Uprop1)<br /> @Html.ValidationMessageFor(x => x.Uprop1) </div> <input type="submit" value-="Submit" onclick="abc()" /> }


tratar

var validator = $("#form-id").data(''validator''); validator.settings.ignore = "";