validar - Error en jquery.validate.js en MVC 4 Project con jQuery 1.9
validar formulario jquery validate (7)
Aquí hay otra solución:
Usé MVC 3 con jQuery 1.71 y jQuery UI 1.8.20. Utilicé el widget jQuery UI Tabs y configuré cada área con pestañas para cargar una página parcial que contenía campos de entrada.
Funciona muy bien en Firefox v22 y Chrome v28, falla en IE10. El error que obtuve fue ''No se pudo obtener la propiedad'' configuración ''de referencia indefinida o nula''
La resolución era ir a los formularios parciales y comentar el siguiente código:
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>*
Ahora funciona con éxito en todos los navegadores.
Creé un nuevo proyecto ASP.Net MVC 4 usando la plantilla en Visual Studio 2012. Después de actualizar a jQuery 1.9, la funcionalidad de inicio de sesión se rompe. Específicamente, obtengo el error
0x800a138f - Error de tiempo de ejecución de JavaScript: no se puede obtener la propiedad ''call'' de referencia indefinida o nula
en la línea 1172, columna 5 en jquery.validate.js
¿Cómo puedo solucionar este problema?
El problema es la línea de código dentro del script de validación
$.event.handle.call(this,e);
El problema aquí es con $.event.handle
. Tanto this
como e
tienen valores adecuados. jQuery desaprobó $ .event.handle a favor de jQuery.event.dispatch de acuerdo con el script de migración http://code.jquery.com/jquery-migrate-1.2.0.js .
Reparar estos errores es tan fácil como simplemente reemplazar la referencia a manejar con despacho.
Esto puede ser envuelto en una devolución de llamada de document.ready para asegurar que se ejecuta después de que se ejecuten los otros scripts.
$(function(){
jQuery.event.handle = jQuery.event.dispatch
});
El problema subyacente es que algunos métodos que se habían desaprobado desde jQuery 1.7 (cuando se agregaron métodos nuevos y mejorados) se han eliminado en 1.9. Al parecer, jQuery Validate no se ha actualizado, por lo que utiliza los nuevos métodos. Descubrí que usar el complemento jQuery Migrate, que vuelve a poner los métodos eliminados, resolvió mis problemas con esto.
Este problema está solucionado en jQuery Validation Plugin 1.11.0pre .
Lamentablemente, actualmente no existe una compilación previa a NuGet, por lo que actualmente es necesario descargar jquery.validation.js directamente desde GitHub:
jQuery.Validation 1.11 ahora está disponible a través de NuGet (gracias @Simon_Weaver).
ACTUALIZAR
Parece que el soporte general para jQuery 1.9 está en la base de código jQuery.Validation pero aún no se ha liberado
Reemplazar la ruta del script de paquetes por la siguiente línea funcionó para mí.
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script>
Intenté actualizar la validación de jquery a través de Nuget y también actualicé la versión de jquery a 2.0, pero ninguna de esas soluciones funcionó. El único que funcionó bien sin descargar nada de la versión Pre fue la solución propuesta por Texellab
Si instala jQuery.Migrate 1.1.1, funcionará bien con jQuery.Validation 1.11, jQuery 1.9 y 2.x.
Además de hacer install-package jQuery.Migrate
, debes agregar el JavaScript a BundleConfig.cs. Lo agregué justo después de jQuery y así es como se ve ahora la línea que registra jQuery:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js", // jQuery itself
"~/Scripts/jquery-migrate-{version}.js")); // jQuery migrate
Tuve el mismo problema, no hay problema en Firefox, pero es decir, todavía da el error. Estoy usando jquery-2.0.0; jQuery Validation Plugin 1.11.1
Encontré una solución: reemplazar
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
con
@section Scripts{
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script>
}