web-dev-qa-db-fra.com

La validation jQuery ne fonctionne pas dans IE7 + IE8

J'essaie d'utiliser le plugin jQuery Validation sur un formulaire de mon site Web. Le formulaire fonctionne dans FF, Chrome, Opera et Safari. Il doit encore fonctionner dans IE7 ou IE8.

Ci-dessous est une version simplifiée de mon code qui semble fonctionner dans tous les navigateurs sauf 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>

Edit: Nous savons maintenant que l'utilisation de jquery dernier, j'utilisais jQuery v1.6, était le problème. Je suis revenu à v1.5.2 et changé

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

à:

$("form").validate ({

Tout fonctionne dans IE, maintenant. Merci.

37
magzalez

Je pense que vous devez soit revenir à une version antérieure de jquery (1.5.2) ou utiliser la version la plus récente du plugin de validation 1.8.0.1.

43
redsquare

Lorsque vous créez un nouveau projet ASP.NET MVC 3 dans Visual studio, votre dossier de script contiendra par défaut entre autres:

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

L'une des premières choses que vous voudrez peut-être faire est de mettre à jour la version jquery vers la dernière version, qui est aujourd'hui la version 1.7.1

Après cela, votre validation côté client cessera de fonctionner dans Internet Explorer 7 et Internet Explorer 8 .

En effet, la version jquery.validate n'est pas incompatible avec les versions jquery> 1.6 . Les solutions sont simples, vous devez également mettre à jour votre version de jquery.validate.

Vous pouvez trouver la version actuelle 1.9 du CDN de Microsoft ou la dernière version de GitHub ici:

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

Validation Jitery GitHub: https://github.com/jzaefferer/jquery-validation/downloads

N'oubliez pas que vous pouvez toujours trouver la dernière bibliothèque javascript dans Microsofts CDN, voir la liste complète des bibliothèques disponibles ici: http://www.asp.net/ajaxlibrary/cdn.ashx

Cette information provient de mon article de blog à propos de ce problème

16
Stian

Pour ce que ça vaut, j'ai dû mettre à niveau vers la dernière version de JQuery (1.8.2 à ce moment) et Validate (1.10) pour contourner ce problème.

5
ozz

J'ai eu des problèmes avec jquery.validate.js dans IE7/IE8. Après le débogage, j'ai remarqué que la ligne suivante était à l'origine du problème (ln 436 dans la version 1.7):

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

Remplacez ces deux lignes par quelque chose comme:

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

Cela a fait l'affaire pour moi.

4
nullable

J'ai eu le même problème sur Sage CRM en utilisant la saisie semi-automatique jqueryui obtenant l'erreur "script3: membre introuvable. Jquery-1.8.2.min.js, caractère de ligne 2 32075" uniquement dans IE (version 10 Cette erreur a été bloquée en mode page: IE forçait le site en IE 7 mode standard).

C'est un hack méchant, mais cela fonctionne bien. Mettez cela au début de la page. Ça m'a coûté une heure ce soir de jouer avec ça, j'espère que ça aide quelqu'un d'autre.

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

Je viens d'avoir ce problème mais le problème n'était pas que j'avais besoin de la dernière version de jquery - c'est la dernière version de jquery qui a causé le problème. Jquery 2.x ne prend pas en charge IE pour le moment, alors assurez-vous que vous utilisez 1.8+ mais moins de 2.0.

1
kad81