liste à bornes variables (dépendent d'une autre saisie)
7 réponses
Serge Nazarian
Bonjour,
J'ai un formulaire qui demande le numéro d'une semaine de début (entre 1 et
30) puis celui d'une semaine de fin (entre 1 et 30 aussi).
Je voudrais l'améliorer.
Je souhaite donc faire saisir le numéro de la semaine de début (entre 1 et
30) et qu'ensuite, dans les numéros proposés pour la semaine de fin, il n'y
ait QUE les numéros égaux ou supérieurs à la semaine de début.
Une amélioration me vient même à l'esprit :
On choisit une semaine début ou fin et dans les possibilités pour l'autre,
il n'y a que des choix licites.
Par exemple si je choisis 5 pour semaine de fin, je ne veux plus avoir pour
choix que 1,2,3,4 et 5 dans la semaine de début.
Si je choisis 29 comme semaine de début, seuls 29 et 30 doivent être
proposés pour la semaine de fin.
Ceci est-il possible ?
Merci pour toute aide.
Cordialement,
--
Serge Nazarian
Cliquez ci dessous pour une réponse personnelle :
http://cerbermail.com/?CBBJUUv0pN
Ceci est-il possible ? Une solution qui inclu un rechargement de la page me semble assez facile
à implémenter...
Oui, mais une solution de génération des options en JS me semble aussi possible. Je bosse dessus et envoit le script en fin de matinée.
-- Astuces informatiques: http://www.crazycat.info Tchattez en liberté: http://www.crazy-irc.net
CrazyCat
Voici ce que j'ai vite fait. Pour ne pas trop compliquer, je colore les champs "inutilisables" en rouge, tu peux mettre des vérifications plutôt ou traiter comme tu veux.
Ceci est juste un départ :)
<html> <head> <script language="javascript"> var gdebut = 1 var gfin = 30; var sdebut = 1; var sfin = 30;
function initsel() { mydebut = document.getElementById("debut"); myfin = document.getElementById("fin"); mydebut.options.length = 0; myfin.options.length = 0; for (i=gdebut; i<=gfin; i++) { dadded = new Option(i,i - 1); mydebut.options[i - 1] = dadded; if (i >= sfin) { mydebut.options[i - 1].style.color = 'red'; } } for (i=gdebut; i<=gfin; i++) { sadded = new Option(i,i - 1); myfin.options[i - 1] = sadded; if (i <= sdebut) { myfin.options[i - 1].style.color = 'red'; } } mydebut.options[sdebut].selected = true; myfin.options[sfin - 1].selected = true; }
-- Astuces informatiques: http://www.crazycat.info Tchattez en liberté: http://www.crazy-irc.net
Voici ce que j'ai vite fait.
Pour ne pas trop compliquer, je colore les champs "inutilisables" en
rouge, tu peux mettre des vérifications plutôt ou traiter comme tu veux.
Ceci est juste un départ :)
<html>
<head>
<script language="javascript">
var gdebut = 1
var gfin = 30;
var sdebut = 1;
var sfin = 30;
function initsel() {
mydebut = document.getElementById("debut");
myfin = document.getElementById("fin");
mydebut.options.length = 0;
myfin.options.length = 0;
for (i=gdebut; i<=gfin; i++) {
dadded = new Option(i,i - 1);
mydebut.options[i - 1] = dadded;
if (i >= sfin) {
mydebut.options[i - 1].style.color = 'red';
}
}
for (i=gdebut; i<=gfin; i++) {
sadded = new Option(i,i - 1);
myfin.options[i - 1] = sadded;
if (i <= sdebut) {
myfin.options[i - 1].style.color = 'red';
}
}
mydebut.options[sdebut].selected = true;
myfin.options[sfin - 1].selected = true;
}
Voici ce que j'ai vite fait. Pour ne pas trop compliquer, je colore les champs "inutilisables" en rouge, tu peux mettre des vérifications plutôt ou traiter comme tu veux.
Ceci est juste un départ :)
<html> <head> <script language="javascript"> var gdebut = 1 var gfin = 30; var sdebut = 1; var sfin = 30;
function initsel() { mydebut = document.getElementById("debut"); myfin = document.getElementById("fin"); mydebut.options.length = 0; myfin.options.length = 0; for (i=gdebut; i<=gfin; i++) { dadded = new Option(i,i - 1); mydebut.options[i - 1] = dadded; if (i >= sfin) { mydebut.options[i - 1].style.color = 'red'; } } for (i=gdebut; i<=gfin; i++) { sadded = new Option(i,i - 1); myfin.options[i - 1] = sadded; if (i <= sdebut) { myfin.options[i - 1].style.color = 'red'; } } mydebut.options[sdebut].selected = true; myfin.options[sfin - 1].selected = true; }
-- Astuces informatiques: http://www.crazycat.info Tchattez en liberté: http://www.crazy-irc.net
ASM
Bonjour,
J'ai un formulaire qui demande le numéro d'une semaine de début (entre 1 et 30) puis celui d'une semaine de fin (entre 1 et 30 aussi).
ce principe me semble dangereux : il y a 2 sortes de calcul des semaines dans l'année. J'ai déjà raté des rendez-vous parce que nos agendas ne commençaient pas à la même semaine.
de plus c'est curieux ça : 30 semaines ?
Je voudrais l'améliorer. Je souhaite donc faire saisir le numéro de la semaine de début (entre 1 et 30) et qu'ensuite, dans les numéros proposés pour la semaine de fin, il n'y ait QUE les numéros égaux ou supérieurs à la semaine de début.
function select30(selecteur,debut,fin) { selecteur.length = 0; for(var i=(-1+debut);i<fin;i++) { var n = +1+i; var o = new Option(n,n); selecteur.options[selecteur.length] = o; } }
<select name"sel_1" onchange="var k = this.options.selectedIndex; select30('sel_2',+1+k,30);" blabla>
Une amélioration me vient même à l'esprit : On choisit une semaine début ou fin et dans les possibilités pour l'autre, il n'y a que des choix licites. Par exemple si je choisis 5 pour semaine de fin, je ne veux plus avoir pour choix que 1,2,3,4 et 5 dans la semaine de début.
<select name"sel_2" onchange="var k = this.options.selectedIndex; select30('sel_1',1,+1+k);" blabla>
Si je choisis 29 comme semaine de début, seuls 29 et 30 doivent être proposés pour la semaine de fin.
Là, ça va être très très dur ... puisqu'il s'arrête à 5 maintenant !
-- Stephane Moriaux et son [moins] vieux Mac
Bonjour,
J'ai un formulaire qui demande le numéro d'une semaine de début (entre 1
et 30) puis celui d'une semaine de fin (entre 1 et 30 aussi).
ce principe me semble dangereux : il y a 2 sortes de calcul des semaines
dans l'année.
J'ai déjà raté des rendez-vous parce que nos agendas ne commençaient pas
à la même semaine.
de plus c'est curieux ça : 30 semaines ?
Je voudrais l'améliorer.
Je souhaite donc faire saisir le numéro de la semaine de début (entre 1
et 30) et qu'ensuite, dans les numéros proposés pour la semaine de fin,
il n'y ait QUE les numéros égaux ou supérieurs à la semaine de début.
function select30(selecteur,debut,fin) {
selecteur.length = 0;
for(var i=(-1+debut);i<fin;i++) {
var n = +1+i;
var o = new Option(n,n);
selecteur.options[selecteur.length] = o;
}
}
<select name"sel_1"
onchange="var k = this.options.selectedIndex;
select30('sel_2',+1+k,30);"
blabla>
Une amélioration me vient même à l'esprit :
On choisit une semaine début ou fin et dans les possibilités pour
l'autre, il n'y a que des choix licites.
Par exemple si je choisis 5 pour semaine de fin, je ne veux plus avoir
pour choix que 1,2,3,4 et 5 dans la semaine de début.
<select name"sel_2"
onchange="var k = this.options.selectedIndex;
select30('sel_1',1,+1+k);"
blabla>
Si je choisis 29 comme semaine de début, seuls 29 et 30 doivent être
proposés pour la semaine de fin.
Là, ça va être très très dur ... puisqu'il s'arrête à 5 maintenant !
J'ai un formulaire qui demande le numéro d'une semaine de début (entre 1 et 30) puis celui d'une semaine de fin (entre 1 et 30 aussi).
ce principe me semble dangereux : il y a 2 sortes de calcul des semaines dans l'année. J'ai déjà raté des rendez-vous parce que nos agendas ne commençaient pas à la même semaine.
de plus c'est curieux ça : 30 semaines ?
Je voudrais l'améliorer. Je souhaite donc faire saisir le numéro de la semaine de début (entre 1 et 30) et qu'ensuite, dans les numéros proposés pour la semaine de fin, il n'y ait QUE les numéros égaux ou supérieurs à la semaine de début.
function select30(selecteur,debut,fin) { selecteur.length = 0; for(var i=(-1+debut);i<fin;i++) { var n = +1+i; var o = new Option(n,n); selecteur.options[selecteur.length] = o; } }
<select name"sel_1" onchange="var k = this.options.selectedIndex; select30('sel_2',+1+k,30);" blabla>
Une amélioration me vient même à l'esprit : On choisit une semaine début ou fin et dans les possibilités pour l'autre, il n'y a que des choix licites. Par exemple si je choisis 5 pour semaine de fin, je ne veux plus avoir pour choix que 1,2,3,4 et 5 dans la semaine de début.
<select name"sel_2" onchange="var k = this.options.selectedIndex; select30('sel_1',1,+1+k);" blabla>
Si je choisis 29 comme semaine de début, seuls 29 et 30 doivent être proposés pour la semaine de fin.
Là, ça va être très très dur ... puisqu'il s'arrête à 5 maintenant !
-- Stephane Moriaux et son [moins] vieux Mac
ASM
Voici ce que j'ai vite fait. Pour ne pas trop compliquer,
pour du pas compliqué ce n'est pas du simple simple non plus :-)
Je suis touj très étonné qu'on passe par le gEBI dans le traitement de formulaires (dont usuellement les éléments portent un nom et pas obligatoirement d'id) alors qu'on a à dispo tt un tas de fonctions simples et directes en JS qui ne mettent pas en branle le DOM.
Nota : tous les navigateurs n'admettent pas de traitement de couleurs (styles) dans les éléments de formulaires.
-- Stephane Moriaux et son [moins] vieux Mac
Voici ce que j'ai vite fait.
Pour ne pas trop compliquer,
pour du pas compliqué ce n'est pas du simple simple non plus :-)
Je suis touj très étonné qu'on passe par le gEBI dans le traitement de
formulaires (dont usuellement les éléments portent un nom et pas
obligatoirement d'id) alors qu'on a à dispo tt un tas de fonctions
simples et directes en JS qui ne mettent pas en branle le DOM.
Nota :
tous les navigateurs n'admettent pas de traitement de couleurs (styles)
dans les éléments de formulaires.
Voici ce que j'ai vite fait. Pour ne pas trop compliquer,
pour du pas compliqué ce n'est pas du simple simple non plus :-)
Je suis touj très étonné qu'on passe par le gEBI dans le traitement de formulaires (dont usuellement les éléments portent un nom et pas obligatoirement d'id) alors qu'on a à dispo tt un tas de fonctions simples et directes en JS qui ne mettent pas en branle le DOM.
Nota : tous les navigateurs n'admettent pas de traitement de couleurs (styles) dans les éléments de formulaires.
-- Stephane Moriaux et son [moins] vieux Mac
CrazyCat
ASM wrote:
Pour ne pas trop compliquer, pour du pas compliqué ce n'est pas du simple simple non plus :-)
Mais qui peut le plus peut le moins :) Tu devrais savoir, avec le temps, que j'aime faire des scripts qui puissent servir de tutoriaux, donc qui exploitent un maximum de choses.
Je suis touj très étonné qu'on passe par le gEBI dans le traitement de formulaires (dont usuellement les éléments portent un nom et pas obligatoirement d'id) alors qu'on a à dispo tt un tas de fonctions simples et directes en JS qui ne mettent pas en branle le DOM.
Alors, deux points: 1) on peut très bien utiliser le gEBN si on préfère 2) j'aurais aussi pu envoyer 'this' et en faire un eval(), mais je suis feignant ;)
Nota : tous les navigateurs n'admettent pas de traitement de couleurs (styles) dans les éléments de formulaires.
le changement de style était la première chose qui m'est venu à l'esprit :)
-- Astuces informatiques: http://www.crazycat.info Tchattez en liberté: http://www.crazy-irc.net
ASM wrote:
Pour ne pas trop compliquer,
pour du pas compliqué ce n'est pas du simple simple non plus :-)
Mais qui peut le plus peut le moins :)
Tu devrais savoir, avec le temps, que j'aime faire des scripts qui
puissent servir de tutoriaux, donc qui exploitent un maximum de choses.
Je suis touj très étonné qu'on passe par le gEBI dans le traitement de
formulaires (dont usuellement les éléments portent un nom et pas
obligatoirement d'id) alors qu'on a à dispo tt un tas de fonctions
simples et directes en JS qui ne mettent pas en branle le DOM.
Alors, deux points:
1) on peut très bien utiliser le gEBN si on préfère
2) j'aurais aussi pu envoyer 'this' et en faire un eval(), mais je suis
feignant ;)
Nota :
tous les navigateurs n'admettent pas de traitement de couleurs (styles)
dans les éléments de formulaires.
le changement de style était la première chose qui m'est venu à l'esprit :)
--
Astuces informatiques: http://www.crazycat.info
Tchattez en liberté: http://www.crazy-irc.net
Pour ne pas trop compliquer, pour du pas compliqué ce n'est pas du simple simple non plus :-)
Mais qui peut le plus peut le moins :) Tu devrais savoir, avec le temps, que j'aime faire des scripts qui puissent servir de tutoriaux, donc qui exploitent un maximum de choses.
Je suis touj très étonné qu'on passe par le gEBI dans le traitement de formulaires (dont usuellement les éléments portent un nom et pas obligatoirement d'id) alors qu'on a à dispo tt un tas de fonctions simples et directes en JS qui ne mettent pas en branle le DOM.
Alors, deux points: 1) on peut très bien utiliser le gEBN si on préfère 2) j'aurais aussi pu envoyer 'this' et en faire un eval(), mais je suis feignant ;)
Nota : tous les navigateurs n'admettent pas de traitement de couleurs (styles) dans les éléments de formulaires.
le changement de style était la première chose qui m'est venu à l'esprit :)
-- Astuces informatiques: http://www.crazycat.info Tchattez en liberté: http://www.crazy-irc.net
R12y
On Fri, 31 Mar 2006 12:07:25 +0200, ASM wrote:
J'ai un formulaire qui demande le numéro d'une semaine de début (entre 1 et 30) puis celui d'une semaine de fin (entre 1 et 30 aussi).
ce principe me semble dangereux : il y a 2 sortes de calcul des semaines dans l'année. J'ai déjà raté des rendez-vous parce que nos agendas ne commençaient pas à la même semaine.
Et puis d'un point de vue statistique, beaucoup de logiciels de travail en groupe (du moins ceux que j'ai rencontré) préfèrent traiter ça server-side.
J'ai un formulaire qui demande le numéro d'une semaine de début (entre 1
et 30) puis celui d'une semaine de fin (entre 1 et 30 aussi).
ce principe me semble dangereux : il y a 2 sortes de calcul des semaines
dans l'année.
J'ai déjà raté des rendez-vous parce que nos agendas ne commençaient pas
à la même semaine.
Et puis d'un point de vue statistique, beaucoup de logiciels de travail en
groupe (du moins ceux que j'ai rencontré) préfèrent traiter ça server-side.
J'ai un formulaire qui demande le numéro d'une semaine de début (entre 1 et 30) puis celui d'une semaine de fin (entre 1 et 30 aussi).
ce principe me semble dangereux : il y a 2 sortes de calcul des semaines dans l'année. J'ai déjà raté des rendez-vous parce que nos agendas ne commençaient pas à la même semaine.
Et puis d'un point de vue statistique, beaucoup de logiciels de travail en groupe (du moins ceux que j'ai rencontré) préfèrent traiter ça server-side.