codice:
document.writeln("<table class=bordoTabellaTest border=0 cellpadding=0 cellspacing=1 width=100%>");
document.writeln(" <tr>");
document.writeln(" <td class=body valign=top>");
document.writeln(" <input type=text name='campoA0' onFocus='mustMoveFocus=true;currPos=0;' onBlur='mustMoveFocus=false;' maxlength=30 size=30>");
document.writeln(" <input type=text name='campoB0' onFocus='mustMoveFocus=true;currPos=0;' onBlur='mustMoveFocus=false;' maxlength=30 size=30>");
document.writeln(" <input type=text name='campoC0' onFocus='mustMoveFocus=true;currPos=0;' onBlur='mustMoveFocus=false;' maxlength=30 size=30>");
document.writeln(" <select name='campoD0' onFocus='mustMoveFocus=true;currPos=0;' onBlur='mustMoveFocus=false;'><OPTION value=1>Uno<OPTION VALUE=2>Due</SELECT>");
document.writeln(" <input type=text name='campoE0' onFocus='mustMoveFocus=true;currPos=0;' onBlur='mustMoveFocus=false;molt0(this.form);' maxlength=30 size=5>");
document.writeln(" <input type=text name='campoF0' onFocus='mustMoveFocus=true;currPos=0;' onBlur='mustMoveFocus=false;molt0(this.form);' maxlength=30 size=5>");
document.writeln(" <input type=text name='campoG0' onFocus='mustMoveFocus=true;currPos=0;' onBlur='mustMoveFocus=false;' maxlength=30 size=5>");
document.writeln(" <input type=button onClick='deleteLine(0);' value='Cancella'>");
document.writeln(" <div id=divDescription1></div></td>");
document.writeln(" </td>");
document.writeln(" </tr>");
document.writeln("</table>");
document.writeln("Usando 'freccia su' o 'freccia giù' puoi muoverti fra le varie righe.
");
document.onkeyup = keyUp;
var html='';
var mustMoveFocus=false;
var currPos=0;
var numLine=0; //numero di linee presenti (0 vuol dire che esiste sono la linea iniziale)
function setFormName(testForm){
formName=testForm;
}
function molt0(f) {
c1=parseFloat("0"+f.campoE0.value);
c2=parseFloat("0"+f.campoF0.value);
f.campoG0.value=c1*c2;
}
function molt(f,g) {
c1=parseFloat("0"+f.elements['campoE'+g].value);
c2=parseFloat("0"+f.elements['campoF'+g].value);
f.elements['campoG'+g].value=c1*c2;
}
function addInsertLine(s){ //aggiunge una linea in fondo (se la penultima cella è piena)
num=numLine+1;
if(!eval("document.getElementById('divDescription"+(num)+"').innerHTML!=''")){ //evito che vengano cancellate le celle già create se torno in una cella all'inizio e scateno un evento che richiama questa funzione: perderei i dati già inseriti
if(eval("document."+formName+".campoA"+(num-1)+".value")!='' || eval("document."+formName+".campoB"+(num-1)+".value")!='' || eval("document."+formName+".campoC"+(num-1)+".value")!='' || eval("document."+formName+".campoE"+(num-1)+".value")!='' || eval("document."+formName+".campoF"+(num-1)+".value")!='' || eval("document."+formName+".campoG"+(num-1)+".value")!=''){ //se è stato inserito qualcosa mostro la nuova riga, altrimenti no
html=" <input type=text name='campoA"+num+"' onFocus='mustMoveFocus=true;currPos="+num+";' onBlur='mustMoveFocus=false;' maxlength=30 size=30>";
html+=" <input type=text name='campoB"+num+"' onFocus='mustMoveFocus=true;currPos="+num+";' onBlur='mustMoveFocus=false;' maxlength=30 size=30>";
html+=" <input type=text name='campoC"+num+"' onFocus='mustMoveFocus=true;currPos="+num+";' onBlur='mustMoveFocus=false;' maxlength=30 size=30>";
html+=" <SELECT name='campoD"+num+"' onFocus='mustMoveFocus=true;currPos="+num+";' onBlur='mustMoveFocus=false;'><OPTION value=1>Uno<OPTION VALUE=2>Due</SELECT>";
html+=" <input type=text name='campoE"+num+"' onFocus='mustMoveFocus=true;currPos="+num+";' onBlur='mustMoveFocus=false;molt(this.form,\""+num+"\");' maxlength=30 size=5>";
html+=" <input type=text name='campoF"+num+"' onFocus='mustMoveFocus=true;currPos="+num+";' onBlur='mustMoveFocus=false;molt(this.form,\""+num+"\");' maxlength=30 size=5>";
html+=" <input type=text name='campoG"+num+"' onFocus='mustMoveFocus=true;currPos="+num+";' onBlur='mustMoveFocus=false;' maxlength=30 size=5>";
html+=" <input type=button onClick='deleteLine("+num+");' value='Cancella'>";
html+=" <div id=divDescription"+(num+1)+"></div>\n";
eval("document.getElementById('divDescription"+num+"').innerHTML=html");
//alert(num+"\n"+eval("document.getElementById('divDescription"+num+"').innerHTML"));
numLine++;
}
}
}
function deleteInsertLine(){ //toglie una linea in fondo (se la penultima è vuota)
for(i=numLine;i>0;i--){
if((eval("document."+formName+".campoA"+(i)+".value")=='' && eval("document."+formName+".campoB"+(i)+".value")=='' && eval("document."+formName+".campoC"+(i)+".value")=='' && eval("document."+formName+".campoE"+(i)+".value")=='' && eval("document."+formName+".campoF"+(i)+".value")=='' && eval("document."+formName+".campoG"+(i)+".value")=='') && (eval("document."+formName+".campoA"+(i-1)+".value")=='' && eval("document."+formName+".campoB"+(i-1)+".value")=='' && eval("document."+formName+".campoC"+(i-1)+".value")=='' && eval("document."+formName+".campoE"+(i-1)+".value")=='' && eval("document."+formName+".campoF"+(i-1)+".value")=='' && eval("document."+formName+".campoG"+(i-1)+".value")=='')){
eval("document.getElementById('divDescription"+(i)+"').innerHTML=''");
//alert (eval("document.getElementById('divDescription"+(i)+"').innerHTML")+"\n"+eval("document."+formName+".campoA"+(i-2)+".value"));
//alert(i+"\n"+eval("document.getElementById('divDescription"+(i)+"').innerHTML"));
numLine--;
}
else break;
}
}
function keyUp(UpEvents){ //gestione degli eventi da tastiera
//aggiunta di nuove righe
//spostamento fra le varie celle
if (!document.all) key=UpEvents.which;
else key=window.event.keyCode;
if(mustMoveFocus){
//spostamenti fra le varie celle
if (key == 38){ //up
if(currPos!=0) eval("document."+formName+".campoA"+(currPos-1)+".focus()");
}
else if (key == 40 ){ //down
if(eval("document."+formName+".campoA"+(currPos+1))) eval("document."+formName+".campoA"+(currPos+1)+".focus()");
}
//eliminazione delle linee di troppo
else if (key == 8 || key == 46){ //backspace o delete
deleteInsertLine();
}
//controllo se devo aggiungere una linea o no
else addInsertLine(currPos+1);
}
}
function insertOption(optionTextA,optionTextB,optionTextC,optionTextE,optionTextF,optionTextG){
n=0;
optionCode='';
while(eval("document."+formName+".campoA"+n)){
if(eval("document."+formName+".campoA"+n+".value")=='' && eval("document."+formName+".campoB"+n+".value")=='' && eval("document."+formName+".campoC"+n+".value")==''){
eval("document."+formName+".campoA"+n+".value=optionTextA");
eval("document."+formName+".campoB"+n+".value=optionTextB");
eval("document."+formName+".campoC"+n+".value=optionTextC");
eval("document."+formName+".campoE"+n+".value=optionTextE");
eval("document."+formName+".campoF"+n+".value=optionTextF");
eval("document."+formName+".campoG"+n+".value=optionTextG");
break;
}
n++;
}
addInsertLine(n+1);
}
function deleteLine(numLineToDelete){
for(i=numLineToDelete;i<numLine-1;i++){
eval("document."+formName+".campoA"+(i)+".value=document."+formName+".campoA"+(i+1)+".value");
eval("document."+formName+".campoB"+(i)+".value=document."+formName+".campoB"+(i+1)+".value");
eval("document."+formName+".campoC"+(i)+".value=document."+formName+".campoC"+(i+1)+".value");
eval("document."+formName+".campoE"+(i)+".value=document."+formName+".campoE"+(i+1)+".value");
eval("document."+formName+".campoF"+(i)+".value=document."+formName+".campoF"+(i+1)+".value");
eval("document."+formName+".campoG"+(i)+".value=document."+formName+".campoG"+(i+1)+".value");
}
eval("document."+formName+".campoA"+(i)+".value=''");
eval("document."+formName+".campoB"+(i)+".value=''");
eval("document."+formName+".campoC"+(i)+".value=''");
eval("document."+formName+".campoE"+(i)+".value=''");
eval("document."+formName+".campoF"+(i)+".value=''");
eval("document."+formName+".campoG"+(i)+".value=''");
deleteInsertLine();
}