Onblur, javascript

Résolu/Fermé
rukire - 23 févr. 2009 à 11:41
alexdelareunion Messages postés 545 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 9 octobre 2023 - 23 févr. 2009 à 15:35
Bonjour,

J'ai crée un formulaire html (j'affiche des variables php par moment) mon fichier est donc de type nomfichier.php

Ce que je souhaite c'est à partir d'un tableau contenant des noms vérifier si le nom saisie par l'utilisateur dans le input n'existe pas déja dans le tableau, pour cela, j'ai tranformé mon tableau php en tableau js (source trouvé sur le net)
Ca ne marche pas, c'est pour cela que je vous solicite, désolée si c'est une erreur à la con, je début en javascript et je me prends la tête depuis 2jours la dessus donc merci d'avance :)
et je fais ceci

echo '<form method="post" action="modif.php">
<label for="nom">Nouveau nom</label> : <input type="text" id="nom" name="'.$nom.'" onblur="verif_nom(this,monTableauJS,'.$i.')"/>';

le js

function verif_nom (elem,tabnom,i)
{
var newname = elem.value;
for (var j=0;j<tabnom.length;j++)
{
if(i != j)
{
if (tabnom[j] == newname)
{
alert("Le nom entrez existe déjà ! Entrer un nouveau svp");

elem.value = "";
}
}

}
}

Ca ne marche pas, c'est pour cela que je vous solicite, désolée si c'est une erreur à la con, je début en javascript et je me prends la tête depuis 2jours la dessus donc merci d'avance :)

16 réponses

DarkRodWarrior Messages postés 1755 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 18 mai 2010 91
23 févr. 2009 à 12:07
name="'.$nom.'" => name=$nom non ?
0
alexdelareunion Messages postés 545 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 9 octobre 2023 142
23 févr. 2009 à 12:08
essaye de créer le formulaire sur une page html statique déja, avant de le décortiquer en php
0
Merci, mais j'ai besoin du php, un formulaire classique statique, je sais faire le traiter aussi (je suis en 2année d'iut info j'ai appris le php et le html mais pas le js)
je modifie un fichier xml avec ce formulaire et j'affiche des bouts du fichier pour aider l'utilisateur, je parse mon fichier avec dom qui est une appli php5

J'ai pas compris ce que tu as dit DarkRoadWarrior
0
DarkRodWarrior Messages postés 1755 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 18 mai 2010 91
23 févr. 2009 à 12:12
Il n'y a rien à comprendre , il faut corriger :)

Mais quel est le soucis ?
As-tu un message d'erreur ?
Rien ne se passe ?

...

Oublie pas que tu utilises Linux , sur Windows peut être que ton code fonctionne :s
0
le nom de mon input c'est que je suis dans une boucle donc il prend une valeur 'nom'.$i et je peux récup en php derriere (après avoir cliqué sur submit)
et oui rien ne se passe je tape un truc que clique ailleurs et rien !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alexdelareunion Messages postés 545 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 9 octobre 2023 142
23 févr. 2009 à 12:36
Ok, j'ai aussi un bts d'info, et j'aime bien commencer simple quand j'arrive pas à faire un truc, voila donc un exemple qui marche dis moi si tu peux l'adapter en changeant le jeu d'essai en vrais noms.
au lieu de faire des boucles dans ton javascript, utilise le tableau "assossiatif", également, je crois que tu devrais passer directement "this.value" à la fonction pour pas alourdir le code.
<html>
<head>
	<script type="text/javascript">

var tabnom = new Array();

function jeu_d_essai() {
	tabnom["nom1"]=1;
	tabnom["nom2"]=1;
	tabnom["nom3"]=1;
	tabnom["nom4"]=1;
	tabnom["nom5"]=1;
}

function verif_nom(nom) {
	var verif = tabnom[nom];
	if (verif == 1) {
		alert("Le nom entrez existe déjà ! Entrer un nouveau svp");
		elem.value = "";
	} else {
		alert("Nom accepte");
	}
}

	</script>
</head>
<body onload="jeu_d_essai();">
	<form method="post" action="modif.php">
	<label for="nom">Nouveau nom</label>
	<input type="text" id="nom" name="toto" onblur="verif_nom(this.value);">
	</form>
</body>
</html>


pardon j'ai laissé un alert() de test dedans je viens de le virer
0
humm c'est interessant mais mon tableau je le rempli avec des noms qui sont dans un fichier xml et pour lire le fichier xml j'utilise dom de php5
0
je vais peut etre dire un truc débile mais si au lieu de mettre dans un tableau je mets dans une chaine de caractère, les noms séparés par une virgule (,) par exemple javascript ne sait pas parcourir ca?
0
bon j'ai fais ca :

mon tableau php je le transforme en chaine séparé par des ,

$tab = implode(",", $tabnom);

puis le input

<label for="nom">Nouveau nom</label> :
<input type="text" id="nom" name="'.$nom.'" onblur="verif_nom(this,'.$tab.','.$i.')"/>

et le js

function verif_nom (elem,tab,i)
{
var tabnom=tab.split(",");
var newname = elem.value;
for (var j=0;j<tabnom.length;j++)
{
if(i != j)
{
if (tabnom[j] == newname)
{
alert("Le nom entrez existe déjà ! Entrer un nouveau svp");

elem.value = "";
}
}

}
}

ca marche pas ... qu'est ce que je fais de mal?
faut mettre l'appel avec les parametre c'est vraiment '.$tab.' pour passer une chaine de caractere?
merci
0
alexdelareunion Messages postés 545 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 9 octobre 2023 142
23 févr. 2009 à 14:45
tu ne peux pas transmettre un tableau php au javascript
0
je sais, il est transformé sous forme de chaine de caractere avec implode
maus je vois que j'ai trouvé le problème, en regardant le code source si j'ai un tableau genre
tab[0]=i
tab[1]=p
ben mon parametre c'est verif_nom(this,i,p,valdei)
je vais essayer en mettant des " " ca me fera peut être un string
0
ben ca change rien ca marche tjs pas j'ai mis un espace au lieu de la virgule et dans l'appel
"'.$tab."
0
bon j'ai mis un alert pour tester s'il y a appel et il n'y a pas appel :s
je ne sais plus quoi faire !
De l'aide s'il vous plait !!
le onblur marche sur mon firefox et sur mon linux (je l'ai tester avec un test bidon et ca marhait)
0
alexdelareunion Messages postés 545 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 9 octobre 2023 142
23 févr. 2009 à 15:18
il faut que tu rajoute des guillemets je pense
onblur="verif_nom(this,'.$tab.','.$i.')"/>

changé en
onblur="verif_nom(this,\''.$tab.'\','.$i.')"/>

sinon tu va envoyé cinquante parametres à la fonction au lieu d'envoyer un gros string
0
c'est exactement ca, comme j'ouvais mon onblur avec " et après ma chaine avec " j'ai donc mis ' pour ouvrir ma chaine et ca marche :)
je récapitule pour si quelqu'un a le même problème

le javascript
function verif_nom (elem,tab,i)
{
var tabnom=tab.split(" ");
var newname = elem.value;
for (var j=0;j<tabnom.length;j++)
{
if(i != j)
{
if (tabnom[j] == newname)
{
alert("Le nom entrez existe déjà ! Entrer un nouveau svp");

elem.value = "";
}
}

}
}

le bout de html/php

echo '<label for="nom">Nouveau nom</label> :
<input type="text" id="nom" name="'.$nom.'" onblur="verif_nom(this,\''.$str.'\','.$i.');"/>';


les \ c'est pour échapper les ' car je suis dans des balises php dans mon code et dans un echo ' ';

Merci beaucoup même si on a trouver la solution en même temps :D
0
si tu peux m'aider j'ai un autre problème aussi

http://www.commentcamarche.net/forum/affich 11199828 javascript php input select

Merci
0
alexdelareunion Messages postés 545 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 9 octobre 2023 142
23 févr. 2009 à 15:35
a mon avis tu aurais tout intérêt à lire le fichier xml directement avec XMLHttpRequest() (Ajax pour les intimes) car sinon ton client va se télécharger la liste de tous les noms "deja pris" ce qui est pas sensas niveau bande passante, et sécurité (bien que ajax ne soit pas non plus fabuleux à ce niveau la vu que l'adresse du fichier xml est dans le source)
0