Condition à moitié respectée
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 :
Code:
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> |
Quand je rentre des caractères :
- 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.