37 votes

La validation jQuery ne fonctionne pas dans IE7 + IE8

Je suis en train d'utiliser le jQuery de Validation plugin sur un formulaire sur mon site. La forme de travaux en FF, Chrome, Opera et Safari. Il a encore à travailler dans IE7 ou IE8.

Ci-dessous est une version simplifiée de mon code qui semble fonctionner dans tous les navigateurs, mais 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 aujourd'hui que l'aide de jquery dernière, j'ai été en utilisant jQuery v1.6, a été le problème. J'ai changé de v1.5.2 et changé

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

pour:

$("form").validate ({

Tout fonctionne dans IE, maintenant. Merci.

43voto

redsquare Points 47518

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

16voto

Stian Points 716

Lorsque vous créez un nouveau ASP.NET MVC 3 Projet dans Visual studio, votre dossier de script par défaut contient 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 pouvez faire est de mettre à jour la version jquery pour la dernière version, qui aujourd'hui est la version 1.7.1

Après cela, votre côté client à la validation d'arrêt de travail dans Internet Explorer 7 et Internet Explorer 8.

C'est parce que le jquery.valider la version n'est pas compatible avec les versions de jquery > 1.6. La solutions est simple, vous devez mettre à jour votre version de jquery.valider ainsi.

Vous pouvez trouver la version actuelle de 1,9 à partir de Microsoft CDN ou la dernière version disponible sur GitHub ici:

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

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

N'oubliez pas que vous pouvez toujours trouver la dernière version de la bibliothèque javascript de Microsoft CA, voir la liste des bibliothèques disponibles ici: http://www.asp.net/ajaxlibrary/cdn.ashx

Cette information est à partir de mon blog à propos de ce problème

5voto

jmo21 Points 886

Pour ce que ça vaut, je devais passer à la dernière version de JQuery (1.8.2 pour le moment) et à Validate (1.10) pour résoudre ce problème.

4voto

Kurt Points 788

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 le tour pour moi.

1voto

kad81 Points 782

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'était la dernière version de jquery qui était à l'origine du problème. Jquery 2.x ne prend pas en charge Internet Explorer pour le moment. Assurez-vous donc que vous utilisez 1.8+ mais moins de 2.0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X