Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[JQuery] Validatie plugin werkt niet in IE

Pagina: 1
Acties:

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Hey,

Onlangs ben ik bezig geweest met JQuery, en dan met name met de Validatie plugin (http://bassistance.de/jqu...jquery-plugin-validation/). Nu werkt alles naar behoren in Firefox, echter werkt de volledige validatie plugin niet in IE (zowel 6 als 7).

Een werkend voorbeeld die zowel werkt in IE als in Firefox (http://jquery.bassistance.de/validate/demo/milk/). Ik heb alles nagelopen in dit voorbeeld, maar ik zie niet wat ik anders doe.

Hieronder kort een aantal codes:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<html>
<head>
<script src="js/lib/jquery.js" type="text/javascript"></script>
<script src="js/validate.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() { 
    // validate signup form on keyup and submit 
    var validator = $("#form1").validate({ 
        rules: { 
            naam: "required", 
            email: { 
                required: true, 
                email: true, 
            }, 
            telefoon: {
                required: false,
                number: true,
                minlength: 10,
            }
        }, 
        messages: { 
            naam: "Niet ingevuld", 
            email: { 
                required: "Incorrect", 
            }, 
        }, 
        // the errorPlacement has to take the table layout into account 
        errorPlacement: function(error, element) { 
            if ( element.is(":radio") ) 
                error.appendTo( element.parent().next().next() ); 
            else if ( element.is(":checkbox") ) 
                error.appendTo ( element.next() ); 
            else 
                error.appendTo( element.parent().next() ); 
        }, 
        // specifying a submitHandler prevents the default submit, good for the demo 
        submitHandler: function() { 
            alert("submitted!"); 
        }, 
        // set this class to error-labels to indicate valid fields 
        success: function(label) { 
            // set   as text for IE 
            label.html(" ").addClass("checked"); 
        } 
    });


}); 

window.onload = function() {
   for(var i = 0, l = document.getElementsByTagName('input').length; i < l; i++) {
        if(document.getElementsByTagName('input').item(i).type == 'text') {
            document.getElementsByTagName('input').item(i).setAttribute('autocomplete', 'off');
        };
    };
  };
</script>
</head>
<body>
<form class="form1c" id="form1" method="get" action="">
    <fieldset id="contactForm">
        <legend>Formulier</legend>
        <table>
            <tbody>
                <tr>
                    <td class="inputLabel"><label for="naam">Naam:</label></td>
                    <td class="inputBG"><input type="text" name="naam" tabindex="1" id="naam" /></td><td class="status"></td>
                </tr>
</tbody>
</table>
</fieldset>
</form>

</body>
</html>


In IE wordt na het klikken op de Submit knop de gehele pagina vernieuwd, dus het lijkt alsof de javascript functies niet worden aangeroepen. Nu heb ik mij rot gezocht naar een mogelijke oorzaak, maar heb helaas niets kunnen vinden.

Weet iemand wat ik fout doe?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

trailing komma's ;)

Intentionally left blank


  • Kwastie
  • Registratie: April 2005
  • Laatst online: 10:13

Kwastie

Awesomeness

waarom maak je gebruik van 'twee' soorten javascript ?

want
JavaScript:
1
2
3
4
5
6
7
window.onload = function() {
   for(var i = 0, l = document.getElementsByTagName('input').length; i < l; i++) {
           if(document.getElementsByTagName('input').item(i).type == 'text') {
              document.getElementsByTagName('input').item(i).setAttribute('autocomplete', 'off');
          };
       };
  }; 


is namelijk niet de manier hoe je moet werken als gebruikt maakt van jquery.

$(document).ready(function() { betekend namelijk hetzelfde als window.onload = function() {
en document.getElementsByTagName betekend hetzelfde als $('naam').

Ik weet niet of het correct is maar volgens mij ben je wezen knippen/plakken (anders had je dit namelijk geweten)

When I get sad i stop being sad and be awesome instead


  • H004
  • Registratie: Maart 2006
  • Laatst online: 28-05 19:55
Kwastie schreef op vrijdag 29 augustus 2008 @ 20:14:
waarom maak je gebruik van 'twee' soorten javascript ?

want
JavaScript:
1
...


is namelijk niet de manier hoe je moet werken als gebruikt maakt van jquery.

$(document).ready(function() { betekend namelijk hetzelfde als window.onload = function() {
en document.getElementsByTagName betekend hetzelfde als $('naam').

Ik weet niet of het correct is maar volgens mij ben je wezen knippen/plakken (anders had je dit namelijk geweten)
Maar als t wel werkt dan is dat blijkbaar niet noodzakelijk. T ligt dus aan de trailing comma's waar IE over valt (bv. de komma op regel 13), maar FF niet...

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Bedankt voor de reacties. Het is aannemelijk dat het inderdaad aan de trailing komma's ligt, maar wanneer ik onderstaande code gebruik dan werkt het zowel in FF als in IE niet (meer).

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<script type="text/javascript">
$(document).ready(function() { 
    // validate signup form on keyup and submit 
    var validator = $("#form1").validate({ 
        rules: { 
            naam: "required", 
            email: { 
                required: true, 
                email: true
            }
            telefoon: {
                required: false,
                number: true,
                minlength: 10
            }
        }
        messages: { 
            naam: "Niet ingevuld", 
            email: { 
                required: "Incorrect" 
            }
        } 
        // the errorPlacement has to take the table layout into account 
        errorPlacement: function(error, element) { 
            if ( element.is(":radio") ) 
                error.appendTo( element.parent().next().next() ); 
            else if ( element.is(":checkbox") ) 
                error.appendTo ( element.next() ); 
            else 
                error.appendTo( element.parent().next() ); 
        }
        // specifying a submitHandler prevents the default submit, good for the demo 
        submitHandler: function() { 
            alert("submitted!"); 
        } 
        // set this class to error-labels to indicate valid fields 
        success: function(label) { 
            // set   as text for IE 
            label.html(" ").addClass("checked"); 
        } 
    });

for(var i = 0, l = document.getElementsByTagName('input').length; i < l; i++) {
           if(document.getElementsByTagName('input').item(i).type == 'text') {
              document.getElementsByTagName('input').item(i).setAttribute('autocomplete', 'off');
          };
};

});
</script>


In de Foutconsole geeft ie een fout aan, namelijk:

"missing } after property list
telefoon {"

Maar ik zie niet wat ik nou fout doe :(

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

nu mis je weer een komma; tussen regel 16 en 17 om precies te zijn ;)

Intentionally left blank


  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Hij blijft de foutmelding geven in de Foutconsole en het werkt dus nog niet in FF en in IE :(

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

crisp schreef op zaterdag 30 augustus 2008 @ 13:46:
nu mis je weer een komma; tussen regel 16 en 17 om precies te zijn ;)
En na 22, 31, en 35 if I'm correct.

Going for adventure, lots of sun and a convertible! | GMT-8


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Snake schreef op zaterdag 30 augustus 2008 @ 13:49:
[...]

En na 22, 31, en 35 if I'm correct.
jep, ook; ik haakte al af bij de eerste missende komma :P

Intentionally left blank


  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Helemaal top jongens! Dit was inderdaad het probleem. Na het toevoegen van een extra komma op regel 10 en de door jullie aangegeven plaatsen werkt het correct. Hartelijk dank!
Pagina: 1