11548 sujets

JavaScript, DOM et API Web HTML5

Hello, je m'y connais relativement bien en php mais je débute en javascript/ajax.
Je dois faire une bête condition dans une fonction, mais je n'arrive pas à la faire fonctionner.
En gros; la fonction doit s'exécuter si le code postal entré n'est pas vide et est plus grand que 3.
if (zipCodeInput != '')
marche très bien;
if (zipCodeInput.lenght >3 '')
mais ceci ne fonctionne pas. Je ne comprend pas pourquoi.
De plus, pour faire ma double condition; je dois faire une syntaxe comme en php
if ((zipCodeInput != '') && (zipCodeInput.lenght >3 '')) {

ou bien est ce comme ceci ? (j'ai vu ça sur google:)
if (zipCodeInput != '' && zipCodeInput.lenght >3 '') {


Enfin, je me dit que ça ne sert à rien de faire cette double condition puisque la deuxième vérifie la seconde...
Par contre je pourrais vérifier si ZipCodeInput est un nombre ET constitué de plus de 3 caractères...

Qu'en dites vous ?

Merci pour votre aide !
Hum, bon, déjà, je pense qu'il vaudrait mieux écrire

if (zipCodeInput != '' && zipCodeInput.length >3)

car
1. il n'y a aucune raison de placer une chaîne vide à la fin de ton test
2. length s'écrit length et non lenght Smiley cligne

Javascript (comme pas mal de langages plus ou moins modernes) est très pratique pour les tests. Si une fonction n'est pas supportée, ou bien si elle ne peut renvoyer de résultat correct, tout se passe comme si un false était généré.

Donc pour ton test, je pense qu'il suffit de vérifier que parseInt(zipCodeInput.length)>99 (parce qu'un nombre entier strictement supérieur à 99 s'écrit forcément avec au moins 3 caractères Smiley cligne ). Si le code postal est une chaîne vide ou bien, plus généralement, ne peut être transformé en nombre, parseInt va renvoyer NaN et donc le test devrait renvoyer aussi false.
Modérateur
Salut,

Gilles a écrit :
Donc pour ton test, je pense qu'il suffit de vérifier que parseInt(zipCodeInput.length)>99 (parce qu'un nombre entier strictement supérieur à 99 s'écrit forcément avec au moins 3 caractères cligne ). Si le code postal est une chaîne vide ou bien, plus généralement, ne peut être transformé en nombre, parseInt va renvoyer NaN et donc le test devrait renvoyer aussi false.
Là, tu vérifies que zipCodeInput fait 100 caractères plutôt vu que tu appliques le parseInt sur la longueur de la chaîne texte. Smiley ravi

Plutôt comme ceci, non ?
if(zipCodeInput == parseInt(zipCodeInput) && zipCodeInput.length > 3)
koala64 a écrit :
Salut,

Là, tu vérifies que zipCodeInput fait 100 caractères plutôt vu que tu appliques le parseInt sur la longueur de la chaîne texte. Smiley ravi

Plutôt comme ceci, non ?
if(zipCodeInput == parseInt(zipCodeInput) && zipCodeInput.length > 3)


Au temps pour moi Smiley lol (#!*£$!@ de copier/coller !)
Hello !
Merci pour vos réponses, mais ça marche tjs pas !
avec
function zipCodeChanged(zipCodeInput) {
	if(zipCodeInput == parseInt(zipCodeInput) && zipCodeInput.length > 3) {
		toggleDisabled(add_ville);
		var villeSpinner = document.getElementById("villeSpinner");
		villeSpinner.style.display = "inline";
		var srcEl = document.createElement('script');
		srcEl.language="Javascript";
		srcEl.type="text/javascript";
		srcEl.src="zip.php?zip=" + zipCodeInput.value;
		document.body.appendChild(srcEl);
	}
}
, la fonction devrait donc s'activer si zipCodeInput > 3 chiffres...
Et là, ça marche pas du tout ! La fonction ne se déclenche pas....
http://tinyurl.com/3xn9l2
log > etienne
pass > lemarque
Modérateur
Je n'ai pas tout regardé mais tu as mis :
onChange="zipCodeChanged(this);"


Ce ne serait pas plutôt ceci ?
onchange="zipCodeChanged(this.value);"


Nota : ta page est invalide...
Modifié par koala64 (12 Jul 2007 - 15:46)