Bonjour,
J'ai le problème (incompréhensible) suivant :
J'ai un champ de formulaire couplé à jquery.ui - autocomplete pour la recherche de code postal. Je souhaite que le visiteur ne puisse entrer que des chiffres, caractères donc interdits.
J'ai fais le code suivant :
Quand je rentre des caractères :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <!DOCTYPE html> <html> <head> <script type="text/javascript" src="./js/jquery.js"></script> <script type="text/javascript" src="./js/jquery_ui/jquery.ui.core.min.js"></script> <script type="text/javascript" src="./js/jquery_ui/jquery.ui.widget.min.js"></script> <script type="text/javascript" src="./js/jquery_ui/jquery.ui.autocomplete.min.js"></script> <script type="text/javascript"> function isInteger(n) { return n != "" && !isNaN(n) && Math.round(n) == n; } $(document).ready(function(){ $('#ville').keyup(function() { var t = isInteger($('#ville').val()); console.log(t); if (t == true) { $('#ville').autocomplete({ source: './ajax/geo.php?step=20', minLength: 2, select: function(event, ui) { console.log(ui); $('#id_ville').val(ui.item.id); } }); } else { console.log('erreur'); } }); }); </script> </head> <body> <form> <input type="hidden" name="id_ville" id="id_ville" value="0" /> <input type="text" maxlength="5" id="ville" /> </form> </body> </html>
- c'est ok, rien ne s'affiche au niveau de la liste des villes
- dans la console j'ai bien la valeur false qui apparait
- le message erreur apparait aussi
J'efface ensuite le champ pour entrer des nombres :
- là aussi c'est bon : la liste des villes s'affiche bien
- dans la console j'ai bien la valeur true qui apparait
- le message erreur n'apparait pas (normal)
Je test de nouveau des caractères :
- et là, pas bon : la liste des villes s'affiche pour les critères entrés dans le champ
- par contre dans la console j'ai bien la valeur false qui apparait
- le message erreur apparait aussi
Je précise que la page n'est pas rechargée entre chaque test
C'est là qu'est le problème, je ne vois pas trop pourquoi le code à la ligne 19 est exécuté !
Merci de votre aide.
Partager