11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

j'ai un petit souci avec la fonction focus() en javascript sous FF.
En effet, je test un champs de formulaire et lorsau'il n'est pas correct, apparition d'un petit message, effecament de la donnée et curseur sur ce champs.

Voici mon code HTML :

<form action='' method='post' enctype="multipart/form-data" id='fiche_renseignement'>
	<fieldset>
	<legend>Coordonn&eacute;es </legend> 
		<label>Nom * :
			<input name='nom' type='text' size='35' maxlength='30'   value='<?php echo $nom ?>' onblur="Texte(this)"/></label><br />
		<label>Pr&eacute;nom * :
		      <input name='prenom' type='text' size='35' maxlength='30' value='<?php echo $prenom ?>' onblur="Texte(this)"/></label><br />
		<label>E-mail  :
		     	<input name='email' type='text' size='35' maxlength='35' value='<?php echo $email ?>' onblur="Email(this)"/></label><br />
	</fieldset>
	<input name='envoyer_renseignements' type='submit' value="envoyer" class='bouton'/>
	<a href='../?page=acceuil' class='bouton'><img src='../Images/bouton_acceuil.PNG' /></a>
</form>


et mon code javascript :

function Texte(sChamps) {				/* Vérification du'un champs texte */
	var sTexte=sChamps.value.toUpperCase();
	var rRecherche=/^[A-ZÀÂÄÇÉÈÊËÎÏÔÖÙÛÜ' -]{0,35}$/;
	if(!rRecherche.test(sTexte)) {
		alert ("Le format du chanps saisi est incorrect :lettres, espace, ' ou  -");
		sChamps.style.borderColor='#FF0000';
		sChamps.focus();
		sChamps.select();
	} else
		sChamps.style.borderColor='';
}


function Email(sChamps) {				/* Vérification de l'email */
	var sTexte=sChamps.value;
	var rRecherche=/^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
	if (sTexte.length!=0 && !rRecherche.test(sTexte)) {
		alert("Le format du l'e-mail saisi est incorrect : nom_utilisateur@nom_domaine.extension");
		sChamps.value=''; 
		sChamps.style.borderColor='#FF0000';
		sChamps.focus();
		sChamps.select();
	} else
		sChamps.style.borderColor='';
}


Le hic, c'est que l'effacement de la valeur (='') marche,ainsi que le changement de style de la bordure, mais pas la prise de focus.

Par contre, marche sur IE (mais je sais qu'il est plus permissif concernant le code).
Donc je pense que c'est un problème de chemin pour la fonction focus().

J'ai essayé plein de chose (document. , form. , etc) mais je n'ai pas trouvé la combinaison gagnante.

Si vous avez une solution ... Smiley cligne merci par avance Smiley lol
Modifié par tay3112 (21 May 2007 - 18:19)
Essaye d'utiliser un setTimeout, j'ai eu le même problème que toi et chez moi, ça a résolu tout ça :

setTimeout("getElement('"+variable.id+"').focus();", 0);


variable est un champ de formulaire. getElement() est une fonction semblable à getElementById().