37

Estoy tratando de usar el complemento jQuery Validation en un formulario en mi sitio web. La forma funciona en FF, Chrome, Opera y Safari. Todavía tiene que funcionar en IE7 o IE8.jQuery La validación no funciona en IE7 + IE8

A continuación se muestra una versión simplificada de mi código que parece funcionar en todos los navegadores, excepto IE.

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 

<title>Form</title> 

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8/jquery.validate.js"></script> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
     var validator = $("form").validate ({ 
     rules: { 
       first_name: "required" 
       }, 
     messages: { 
       first_name: "Enter your firstname" 
       } 
     }); 
    }); 
</script> 

</head> 

<body> 

<form method="post"> 
    <label for="first_name" class="hide">First Name</label> 
    <input type="text" name="first_name" value="" id="first_name" class="required" /> 
    <button type="submit" id="submit" name="submit">Submit</button> 
</form> 

</body> 

</html> 

Editar: Ahora sabemos que el uso de jQuery última, que estaba usando jQuery v1.6, fue el tema. He cambiado de nuevo a v1.5.2 y cambió

var validator = $("form").validate ({ 

a:

$("form").validate ({ 

Todo está trabajando en IE, ahora. Gracias.

+0

Se movió hasta 1.5.2 y se eliminó "var validator =" para que mi primera línea comenzara con $ ("formulario"). Validar. Gracias @redsquare – magzalez

+0

posible duplicado de [JQuery Validation no funciona en IE8] (http://stackoverflow.com/questions/3722227/jquery-validation-doesnt-work-in-ie8) – ripper234

Respuesta

43

creo que sea necesario volver a una versión anterior de jQuery (1.5.2) o usar la versión más reciente del validation plugin 1.8.0.1.

+0

¿Hay alguna manera de descargar esto? sin nuget? –

+3

@Kieran Andrews pruebe el repositorio https://github.com/jzaefferer/jquery-validation/ – redsquare

+0

¡Gracias! Estaba golpeando mi cabeza contra esto ... – Antony

16

Cuando se crea un nuevo proyecto de ASP.NET MVC 3 en Visual Studio, la carpeta de script por defecto contiene entre otros:

jquery-1.5.1.min.js 
jquery.validate.min.js (which is version 1.8.0) 

Una de las primeras cosas que usted puede hacer es actualizar la versión de jQuery a la última versión, que hoy en día es la versión 1.7.1

Después de hacer esto, su validación del lado del cliente dejará de funcionar en Internet Explorer 7 e Internet Explorer 8.

Esto se debe a que la versión de jquery.validate es no compatible con las versiones de jquery> 1.6. Las soluciones son simples, también necesita actualizar su versión de jquery.validate.

Puede encontrar la versión actual 1.9 del CDN de Microsoft o la versión más reciente de GitHub aquí:

Microsoft Ajax CDN: http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js

GitHub Jquery Validación: https://github.com/jzaefferer/jquery-validation/downloads

Recuerde que siempre puede encontrar la última biblioteca de JavaScript en Microsoft CDS, consulte la lista completa de bibliotecas disponibles IES aquí: http://www.asp.net/ajaxlibrary/cdn.ashx

Esta información es de mi blog post sobre este problema

+1

Gracias por su respuesta, esto funciona para mí, mi configuración: jQuery 1.9.1 y tengo que degradar jQuery Validate de 1.15 a 1.9 – RokumDev

4

tuve problemas con jquery.validate.js en IE7/IE8. Después de la depuración Noté la siguiente línea fue la causa del problema (ln 436 en la versión 1.7):

return $([]).add(this.currentForm.elements) 
      .filter(":input") 

reemplazar estas dos líneas con algo como:

return $(':input', this.currentForm) 

Que hizo el truco para mí.

+0

¡Muchas gracias por esto! Funcionó a las mil maravillas. –

5

Por lo que vale, tuve que actualizar a la última JQuery (1.8.2 en este momento) y validar (1.10) para solucionar este problema.

+1

¡¡¡Gracias un millón !! – michele

+0

@michele de nada :-) – ozz

1

Acabo de tener este problema pero el problema no es que necesite la última versión de jquery: fue la última versión de jquery la que causó el problema. Jquery 2.x no es compatible con IE en este momento, así que asegúrese de estar usando 1.8+ pero menos de 2.0.

+0

jQuery 2.0 es compatible con IE, pero han eliminado todo el código adicional que solo utilizaban versiones obsoletas (rotas) para hacer que jQuery se ejecute más rápido para el resto de nosotros. Para citar http://jquery.com/download: "jQuery 2.x tiene la misma API que jQuery 1.x, pero no es compatible con Internet Explorer 6, 7 ni 8." – EpicVoyage

1

Tuve el mismo problema en Sage CRM usando jqueryui autocompletar obteniendo el error "script3: miembro no encontrado .jquery-1.8.2.min.js, línea 2 de caracteres 32075" solo en IE (versión 10). Este error estaba relacionado en el modo de página: IE estaba forzando al sitio a entrar en el modo estándar de IE 7.

Es un hack desagradable, pero funciona bien. Pon esto al comienzo de la página. Me costó una hora esta noche jugar con esto, espero que esto ayude a alguien más.

<!DOCTYPE HTML> 
<meta http-equiv="x-ua-compatible" content="IE=Edge"> 
Cuestiones relacionadas