Focus

Eléphant du PHP | 330 Messages

23 avr. 2006, 18:40

Bonsoir,

Je valide un formulaire par un ensemble de fonction JS :

Ce formulaire m'envoie sur une page
<form action="admin_photos_upload" id=frmPhotosAdd method=post name=frmPhotosAdd onsubmit="return validFormulaire_photos();">
La fonction de validation marche mais je n'arrive pas à retourner sur la page d'appel et avoir le focus de l'input faux.

Merci de votre aide
function validFormulaire_photos()  
{ 
    /* On récupère directement dans le formulaire la valeur qui a été (éventuellement) saisie */ 
    var Tri = document.forms['frmPhotosAdd'].elements['Tri'].value;
    	         
    /* On initialise une variable de retour */ 
    var valide = false;
   
    validFormulaire_Tri(Tri);
   

} 

function validFormulaire_Tri(valeur)  
{
	
var valide = false;

if (valeur=='')
	{
	
	alert('La case est vide'); 
		
	//window.location.replace('admin_photos_add.php');
	history.go(-1);
	document.forms['frmPhotosAdd'].elements['Titre'].focus();
			
	}
else
	{
	alert('La case n\'est pas vide '); 	
	valide = true;	
	
	}
return valide;		
	
}

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 avr. 2006, 23:43

Salut,

1. tu n'as pas d'extension pour le fichier de traitement "dmin_photos_upload"

2.
/* On initialise une variable de retour */
    var valide = false;
mais jamais tu ne la retourne dans cette fonction.

donc le formulaire est toujours validé

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

24 avr. 2006, 09:15

Bonjour,

Merci cela marche .

Si j'applique la fonction à plusieurs zones de texte, comment puis je récupérer la zone est testée pour adapter le texte de l'alert et avoir le bon focus.

Merci d'avance

Invité
Invité n'ayant pas de compte PHPfrance

24 avr. 2006, 10:18

Résolu

Eléphant du PHP | 330 Messages

25 avr. 2006, 18:33

Bonjour,

Je réécrit mon message car je suis passé en Invité.

J'ai un souci quand je met quelque chose dans la zone text Legende et rien dans zones Tri et Réf Photo, j'ai bien des messages comme quoi les cases sont vides mais il me transfère sur la feuille indiquée dans le formulaire.

Merci de m'expliquer en détail ce qui ne va pas et si possible me fournir un code corrigé.

Merci d'avance

Mes fonctions
function validFormulaire_photos()  
{ 
    /* On récupère directement dans le formulaire la valeur qui a été (éventuellement) saisie */ 
    var Tri = document.forms['frmPhotosAdd'].elements['Tri'].value;
    var RefPhoto = document.forms['frmPhotosAdd'].elements['RefPhoto'].value;
    var Legende = document.forms['frmPhotosAdd'].elements['Legende'].value;

    /* On initialise une variable de retour */ 
    var valide=false ;
      
    valide=validFormulaire_Vide(Tri,obj_tri);
    valide=validFormulaire_Vide(RefPhoto,obj_refphoto);
    valide=validFormulaire_Vide(Legende,obj_legende);
    
return valide;	
 
} 


function validFormulaire_Vide(valeur,objet)  
{
var valide = false;	

if (valeur=='')
	{
	alert('La case ' +objet+ ' est Vide ');
	document.forms['frmPhotosAdd'].elements[objet].focus();
	}
else
	{
	valide = true;	
	}
return valide;		
}
Mon formulaire (début)
<form action="admin_photos_upload.php" id=frmPhotosAdd method=post name=frmPhotosAdd onsubmit="return validFormulaire_photos();">

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 avr. 2006, 21:36

Tu alignes les tests:
valide=validFormulaire_Vide(Tri,obj_tri);
valide=validFormulaire_Vide(RefPhoto,obj_refphoto);
valide=validFormulaire_Vide(Legende,obj_legende); 
donc seule la dernière valeur est prise en compte puisqu'elle ecrase le résultat des tests précédents.
valide=validFormulaire_Vide(Tri,obj_tri);
if(valide)
  valide=validFormulaire_Vide(RefPhoto,obj_refphoto);
if (valide)
   valide=validFormulaire_Vide(Legende,obj_legende); 
sinon si le 1er test renvoie "faux" et le dernier "vrai" alors le formulaire est quand même validé.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 330 Messages

25 avr. 2006, 23:17

Encore une fois merci