.[ Javascript ] Je galère, un peu d'aide SVP! - Programmation
Marsh Posté le 20-08-2001 à 17:28:58
c clair, y a un prob, il doit appeller des fonctions quand je m'y attend pas car il m'affiche plusieurs fois le même message des fois!
Sinon y a un prob:
8-9
10- =>erreur
32-41
109- =>erreur
Peut être parce que à la ligne:
eval("document.f1.min"+num+".value" )>eval("document.f1.max"+num+".value)
le eval ne retourne pas un entier donc la comparaison merde??
Comment faire?
Dites moi surtout si c'est pas une bonne méthode de programmation ce script parce que c'est l'un des 1er que je fais en javascript!
MERCI
Marsh Posté le 20-08-2001 à 23:03:31
Essaie ça, je sais pas si c'est ce que tu voulais faire , mais bon ...
<html>
<head>
<script>
function cherche_le_bon(num)
{ var testobj, i;
for (i = 1; i <= 12; i++)
{ testobj = eval('document.f1.cel' + i);
if (testobj.value != '') return testobj;
}
return document.f1.cel1;
}
function verifieclick(obj, num)
{ var prevobj, goodobj;
if (num == 1) return;
prevobj = eval('document.f1.cel' + (num-1));
if (prevobj.value == '')
{ alert("Remplissez dans l'ordre les intervalles s'il vous plaît" );
goodobj = cherche_le_bon();
goodobj.focus();
}
}
function verifieblur(obj, num)
{ var prevobj;
if (num == 1) return;
prevobj = eval('document.f1.cel' + (num-1));
alert("prevobj : " + prevobj.value + '\n' + 'obj : ' + obj.value);
if (parseInt(prevobj.value) > parseInt(obj.value))
{ alert("Valeur incorrecte" );
obj.focus();
}
}
</script>
</head>
<body>
<form name="f1" method="post" action="cartefinale.php">
Intervalle 1 <input type="text" name="cel1" onfocus="verifieclick(this, 1);" onblur="verifieblur(this, 1);"> <input type"text" name="cel2" onfocus="verifieclick(this, 2);" onblur="verifieblur(this, 2);"><br>
Intervalle 2 <input type="text" name="cel3" onfocus="verifieclick(this, 3);" onblur="verifieblur(this, 3);"> <input type"text" name="cel4" onfocus="verifieclick(this, 4);" onblur="verifieblur(this, 4);"><br>
Intervalle 3 <input type="text" name="cel5" onfocus="verifieclick(this, 5);" onblur="verifieblur(this, 5);"> <input type"text" name="cel6" onfocus="verifieclick(this, 6);" onblur="verifieblur(this, 6);"><br>
Intervalle 4 <input type="text" name="cel7" onfocus="verifieclick(this, 7);" onblur="verifieblur(this, 7);"> <input type"text" name="cel8" onfocus="verifieclick(this, 8);" onblur="verifieblur(this, 8);"><br>
Intervalle 5 <input type="text" name="cel9" onfocus="verifieclick(this, 9);" onblur="verifieblur(this, 9);"> <input type"text" name="cel10" onfocus="verifieclick(this, 10);" onblur="verifieblur(this, 10);"><br>
Intervalle 6 <input type="text" name="cel11" onfocus="verifieclick(this, 11);" onblur="verifieblur(this, 11);"> <input type"text" name="cel12" onfocus="verifieclick(this, 12);" onblur="verifieblur(this, 12);"><br>
</form>
</body>
</html>
Garde à l'esprit qu'un <input type="text"... c'est du texte !!!
J'ai renommé les <input> en séquence, ça permet de toujours avoir le max ou le min précédent en (num-1) sans avoir à tester si on a affaire à un min ou à un max, ça réduit le code
J'espère que ça t'aide.
Marsh Posté le 21-08-2001 à 10:58:58
Merci beaucoup, c'est qympa, c'est plus clair et je connaissait pas tout cette syntaxe, merci encore merci
Marsh Posté le 20-08-2001 à 17:03:14
Voilà mon script, il s'agit d'un formulaire qui demande des valeurs d'intervalles. Il faut donc vérifié que l'intervalle précédent existe et que la nouvelle valeur est supérieure mais y a plein de bug liés aux évènements à d'autres choses(1er intervalle 1-9 2ème:10 => erreur pour lui 10<9??)...
Je suis pas très fort en javascript, peut être que ça existe où que je me complique la vie, vous avez une idée?? MERCI
<html>
<head>
<script>
function chercheerreur(val,num){
var text1;
var text2;
var textder;
var numpre;
if(val=='max'){
if(eval("document.f1.min"+num+".value" )==''){
return chercheerreur('min',num);
}else{
textder="document.f1.max"+num;
return textder;
}
}else{
if((val=='min') && (num-1>=1)){
numpre=num-1;
if(eval("document.f1.max"+numpre+".value" )==''){
return chercheerreur('max',numpre);
}else{
textder="document.f1.min"+num;
return textder;
}
}else{
textder="document.f1.min"+num;
return textder;
}
}
}
function verifieclick(val,num){
var text1;
var text2;
var textder;
var numpre;
if(val=='max'){
if(eval("document.f1.min"+num+".value" )==''){
text1=eval("document.f1.min"+num);
text2=eval("document.f1.max"+num);
text2.value="";
textder=chercheerreur(val,num);
alert("Remplissez dans l'ordre les intervalles s'il vous plaît" );
eval(textder+".focus()" );
}
}else{;
if( (val=='min') && (num-1>=1)){
numpre=num-1;
if(eval("document.f1.max"+numpre+".value" )==''){
text1=eval("document.f1.max"+numpre);
text2=eval("document.f1.min"+num);
text2.value="";
textder=chercheerreur(val,num);
alert("Remplissez dans l'ordre les intervalles s'il vous plaît" );
eval(textder+".focus()" );
}
}
}
}
function verifieblur(val,num){
var text1;
var text2;
var numpre;
if(val=='max'){
if(eval("document.f1.min"+num+".value" )>eval("document.f1.max"+num+".value" )){
text1=eval("document.f1.max"+num);
text1.value="";
alert("Valeur incorrecte" );
text1.focus();
}
}else{;
if( (val=='min') && (num>1)){
numpre=num-1;
if(eval("document.f1.max"+numpre+".value" )>eval("document.f1.min"+num+".value" )){
text1=eval("document.f1.max"+numpre);
text2=eval("document.f1.min"+num);
text2.value="";
alert("Valeur incorrecte" );
text1.focus();
}
}
}
}
</script>
</head>
<body>
<form name="f1" method="post" action="cartefinale.php">
Intervalle 1 <input type="text" name="min1" onfocus="verifieclick('min','1');" onblur="verifieblur('min','1');"> <input type"text" name="max1" onfocus="verifieclick('max','1');" onblur="verifieblur('max','1');"><br>
Intervalle 2 <input type="text" name="min2" onfocus="verifieclick('min','2');" onblur="verifieblur('min','2');"> <input type"text" name="max2" onfocus="verifieclick('max','2');" onblur="verifieblur('max','2');"><br>
Intervalle 3 <input type="text" name="min3" onfocus="verifieclick('min','3');" onblur="verifieblur('min','3');"> <input type"text" name="max3" onfocus="verifieclick('max','3');" onblur="verifieblur('max','3');"><br>
Intervalle 4 <input type="text" name="min4" onfocus="verifieclick('min','4');" onblur="verifieblur('min','4');"> <input type"text" name="max4" onfocus="verifieclick('max','4');" onblur="verifieblur('max','4');"><br>
Intervalle 5 <input type="text" name="min5" onfocus="verifieclick('min','5');" onblur="verifieblur('min','5');"> <input type"text" name="max5" onfocus="verifieclick('max','5');" onblur="verifieblur('max','5');"><br>
Intervalle 6 <input type="text" name="min6" onfocus="verifieclick('min','6');" onblur="verifieblur('min','6');"> <input type"text" name="max6" onfocus="verifieclick('max','6');" onblur="verifieblur('max','6');"><br>
</form>
</body>
</html>