Javascript: focus()

gmarchal -  
 patatosaure -
Bonjour,
Dans un formulaire, j'ai un champs texte qui recoit une date. J'ai écrit une fonction javascript pour vérifier la valider de la date. Si la date est mauvaise, je voudrais que le curseur reste sur cette date, mais je n'y arrive pas.
J'ai beau essayer les 3 différentes versions de focus(), le curseur arrive toujours sur le champs suivant.

Voici une partie du code HTML

<form name='titulaire'>
<input ... >
<input type='text' name='Dnaiss' size='15' maxlength='10' onBlur='js_VerifDate(this.form.Dnaiss)'> (jj/mm/aaaa)
<winput ... >
</form>

Voici le Javascript:

function js_VerifDate(dat) {
si (le test de la date est mauvais) {
alert("Date "+dat.value+" non valable\n");
// dat.focus();
// document.forms.titulaire.elements[dat].focus();
// document.forms.titulaire[dat].focus();
return false;
}
return true;
}

1 réponse

patatosaure
 
Effectivement, firefox ne le fait pas (IE , oui).

Solution :
Une variable globale :

<form name='titulaire'>
<input ... >
<input type='text' name='Dnaiss' size='15' maxlength='10' onBlur='js_VerifDate(this.form.Dnaiss)'> (jj/mm/aaaa)
<winput ... >
</form>

Voici le Javascript:

var IsDateCorrect=1;
function js_VerifDate(dat) {
si (le test de la date est mauvais) {
alert("Date "+dat.value+" non valable\n");
IsDateCorrect=0;
return false;
dat.focus();
}
return true;
}
function js_Defocus(dat){
if(!IsDateCorrect)
dat.focus();
}
1
patatosaure
 
Oubli :

Il faut evidemment rajouter un onFocus='js_Defocus(this.form.Dnaiss);' aux autres champs
0