DamDamDeo a écrit :
Et bien voici ce que j'avais déjà pu faire grace à vous :
http://madafraf.ovh.org/formulaire_omlc/formu_omlc.html (voir l'onglet
effectif)
Bon, je n'ai rien vu de nouveau pour additionner en bas de série
Heu ...
il me semble il y avoir beaucoup de JS pour un seul formulaire, non ?
prototype
object-event
hightlight et autres JS pour cette page
Malheureusement je ne sais me servir de 'prototype' et le code que je peux donner ne s"en sert pas (en particulier pour attraper les choses et machins).
Voici donc à adapter avec la page du form
(je ne me sers que du form et sur la page il fraudrait se servir du table) à copier-coller et essayer :
<html>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function purge(nbre) {
nbre = nbre.replace(',','.');
nbre = nbre.replace(/([^0-9 ^.]|\.{2,5}|\s)/g,'');
return nbre*1; // on renvoie un nombre
}
function nbr2txt(n) {
return n.toString().replace('.',',');
}
function add() {
var f = document.form1;
// nombre total de cellules (même que nombre d'inputs)
var c = f.length;
// nombre de rangées (nombre de rangée du tbody du table)
var r = f.getElementsByTagName('TABLE')[0]; // le table
r = r.getElementsByTagName('TBODY')[0]; // le tbody
r = r.getElementsByTagName('TR').length;
// nombre de cellules par rangée
var n = c/r;
// correction des nombres de rangées et colonnes
c = +c-n; // toutes cellules sauf celles de dernière rangée
r = +r-1; // toutes cellules de rangée sauf dernière
// tableau des totaux par colonne
var tot = [];
// création des totaux par colonnes (totaux mis à zéro)
// la dernière colonne (total de la rangée) est ignorée
for(var i=0; i<n-1; i++) { tot[i] = 0; }
// pour le sous-total de la rangée
var sstot = 0;
// boucle avec un pas de n (boucle sur les rangées)
for(var i=0; i<c; i=i+n) {
sstot = 0; // le sous-total de la rangée est mis à zéro
// boucle sur les inputs de la rangée
for(var j=0; j<(n-1); j++) {
tot[j] += purge(f[+i+j].value); // total de la colonne
sstot += purge(f[+i+j].value); // total de la rangée
}
f[+i+n-1].value = nbr2txt(sstot); // affichage total rangée
}
// la dernière rangée, celle des totaux
sstot = 0;
for(var i=0; i<n-1; i++) { // boucle sur les inputs de la rangée
f[c+i].value = nbr2txt(tot[i]); // affichage du total de la colonne
sstot += tot[i]; // sous-total de la rangée
}
f[c+n-1].value = nbr2txt(sstot); // affichage du total général
}
</script>
<style type="text/css">
input { width: 5em; text-align: center }
input:focus { background: #ff8 }
th input { border-color: red; background: #eee }
</style>
<form name="form1">
<table>
<thead>
<tr>
<th></th>
<th>18</th>
<th>15</th>
<th>12</th>
<th>Ss-Tot</th>
</tr>
</thead>
<tbody>
<tr>
<th>acteurs</th>
<td><input tabindex="1" name="ch_act_18" onchange="add()" /></td>
<td><input tabindex="2" name="ch_act_15" onchange="add()" /></td>
<td><input tabindex="3" name="ch_act_12" onchange="add()" /></td>
<th><input name="ch_act_total" /></th>
</tr>
<tr>
<th>chanteurs</th>
<td><input tabindex="4" name="ch_chant_18" onchange="add()" /></td>
<td><input tabindex="5" name="ch_chant_15" onchange="add()" /></td>
<td><input tabindex="6" name="ch_chant_18" onchange="add()" /></td>
<th><input name="ch_chant_total" /></th>
</tr>
</tbody>
<tr>
<th>totaux</th>
<th><input name="total_18" /></th>
<th><input name="total_15" /></th>
<th><input name="total_18" /></th>
<th><input name="total" /></th>
</tr>
</table>
</form>
</html>
--
sm