View Full Version : [Javascript] Problema tabella dinamica dentro form
luigi589
25-03-2011, 14:49
Salve a tutti, ho un problema che spero di riuscire a risolvere qui
Premetto che sono alle prime armi con l'uso di javascript.
Praticamente ho a che fare con una form avente degli input di tipo testo e di tipo radio. Questi ultimi, a secondo del loro stato modificano, tramite script (javascript) la tabella, aggiungendo o modificando alcune righe.
Sembrava funzionare tutto fino a quando non ho inserito la tag <form ....> prima e dopo la tabella (</form> ). La tabella non è piu dinamica bensì resta statica e non vengono apportate piu modifiche ad ogni cambiamento di input "radio". L'errore che il debug di Firefox mi riporta è "nomefunzione" is not a function.
Spero di essermi espresso bene. in attesa di una vostra riposta vi ringrazio anticipatamente.
Saluti.
wingman87
25-03-2011, 21:53
Può darsi che lo script utilizzi dei riferimenti assoluti che non sono più validi da quando hai inserito la tabella dentro un altro tag. Dovresti postare il codice per avere un aiuto più mirato.
luigi589
29-03-2011, 10:02
<body>
<!-- <form id="assicurazione" action="http://www.miosito.com/inviamail.php" method="POST"> -->
<table width="600" border="2" id="tabella">
<tr>
<td>Il contraente è</td>
<td>
<input type="radio" name="contraente" id="fis" value="" checked="checked" onclick="javascript:contraente(false)" />
Persona fisica
<input type="radio" name="contraente" id="giu" value="" onclick="javascript:contraente(true)" />Persona giuridica
</td>
</tr>
<tr>
<td>Nome e Cognome</td>
<td><input type="text" name="nome" id="nom" value="" /> </td>
</tr>
<tr>
<td>Anno di nascita(aaaa)</td>
<td><input type="text" name="anno" id="ann" value="" /></td>
</tr>
<tr>
<td>Comune di nascita</td>
<td><input type="text" name="comune" id="com" value="" /></td>
</tr>
<tr>
<td>Comune di residenza</td>
<td><input type="text" name="residenza" id="res" value="" /></td>
</tr>
<tr>
<td>E-mail</td>
<td><input type="text" name="mail" id="mail" value="" /></td>
</tr>
<tr>
<td>Anno conseguimento patente(aaaa)</td>
<td><input type="text" name="patente" id="ap" value="" /></td>
</tr>
<tr>
<td>Hai già comprato l'auto?</td>
<td>
<input type="radio" name="auto" id="si" value="" checked="checked" onclick="javascript:auto(false)"/> Si
<input type="radio" name="auto" id="no" value="" onclick="javascript:auto(true)" />No
</td>
</tr>
<tr>
<td>Targa</td>
<td><input type="text" name="targa" id="tr" value="" /></td>
</tr>
<tr>
<td>Classe di merito CU di assegnazione</td>
<td><select name="classe_merito" id="merito">
<option value="">Seleziona una voce...</option>
<option value="1X" >1 (da almeno un anno)</option>
<option value="1" >1 (da meno di un anno)</option>
<option value="2" >2</option>
<option value="3" >3</option>
<option value="4" >4</option>
<option value="5" >5</option>
<option value="6" >6</option>
<option value="7" >7</option>
<option value="8" >8</option>
<option value="9" >9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
</select></td>
</tr>
<tr>
<td>Hai già usufruito della legge Bersani?</td>
<td>
<input type="radio" name="legge" id="si2" value="" checked="checked" /> Si
<input type="radio" name="legge" id="no2" value="" />No
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="Submit" value="Invia Dati" />
</td>
</tr>
</table>
<!-- </form> -->
</body>
Gli script in Javascript in pratica modificano i campi della tabella e, all'occorrenza aggiungono righe. Tutto funziona per bene fino a quando non inserisco le tag form. Appena le inserisco la tabella non si modifica più e le righe restano invariate.
wingman87
29-03-2011, 18:49
Non hai postato il codice js.
luigi589
29-03-2011, 19:14
<script language="javascript">
var bool=new Boolean();
function contraente(bool)
{
var tab=document.getElementById('tabella');
if(bool)
{
tab.rows[1].cells[0].innerHTML="Ragione Sociale";
tab.rows[2].cells[0].innerHTML="Partiva IVA";
tab.rows[3].cells[0].innerHTML="Tipologia azienda";
tab.rows[3].cells[1].innerHTML=<select name="azienda"
id="azienda" ><option
value="" >Scegli il tipo di azienda</option><option
value="1" >Società in accomandita per azioni</option><option
value="2" >Società in accomandita semplice</option><option
value="3" >Società cooperativa a responsabilita limitata</option><option
value="4" >Società nome collettivo</option><option
value="5" >Società per azioni</option><option
value="6" >Società a responsabilita limitata</option><option
value="7" >Società semplice</option><option
value="8" >Società cooperativa a responsabilita illimitata</option><option
value="9" >Società cooperativa a mutualità prevalente</option> </select>
tab.rows[4].cells[0].innerHTML="Comune";
tab.rows[5].cells[0].innerHTML="Indirizzo";
}
else
{
tab.rows[1].cells[0].innerHTML="Nome e Cognome";
tab.rows[2].cells[0].innerHTML="Anno di nascita(aaaa)";
tab.rows[3].cells[0].innerHTML="Comune di nascita";
tab.rows[3].cells[1].innerHTML='<input type="text" name="residenza" id="res" value="" />';
}
}
function auto(bool)
{
var tab=document.getElementById('tabella');
var k;
if(bool && tab.rows.length==12)
{
for(var i=0; i<3; i++){
k=tab.insertRow(9+i);
for(var j=0; j<2; j++)
k.insertCell(-1);
}
tab.rows[8].cells[0].innerHTML="Marca";
tab.rows[9].cells[0].innerHTML="Modello";
tab.rows[9].cells[1].innerHTML='<input type="text" name="modello" id="nmod" value="" />';
tab.rows[10].cells[0].innerHTML="Km percorsi in un anno";
tab.rows[10].cells[1].innerHTML='<input type="text" name="km" id="km" value="10000" />';
tab.rows[11].cells[0].innerHTML="Gancio di traino";
tab.rows[11].cells[1].innerHTML='<input type="radio" name="gancio" id="siz" checked="checked"/>Si<input type="radio" name="gancio" id="noz" />No'
}
else if(!bool && tab.rows.length>12)
{
for(var i=0; i<3; i++){
tab.deleteRow(9);
tab.rows[8].cells[0].innerHTML="Targa";}
}
}
</script>
wingman87
29-03-2011, 19:49
L'inserimento del form causa un conflitto di nomi quando chiami le funzioni contraente e auto perché sono anche nomi di campi del form. La soluzione è cambiare nome alle funzioni o ai campi.
luigi589
29-03-2011, 20:05
Che errore niubbo. Grazie mille davvero sei stato molto disponibile e celere nel risolvere il mio problema.
A presto ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.