Come da guida, ho implementato il codice, per provare ho lasciato tutto come stava, il js viene correttamente interpretato, ossia viene fuori la scritta mostra/nascondi commenti, ma sulle righe non sortisce alcun effetto
ho racchiuso tutta la singola riga tra il div "commenti" ...codice:<tr> <div id="commenti" class="toggle"> <td><input name="itr2" class="uppercase" id="itr2" size="40"></td> <td><input name="for2" class="uppercase" id="for2" size="15"></td> <td><input name="q2" class="uppercase factor" id="q2" size="2" value=""></td> <td><input name="iu2" class="uppercase factor" id="iu2" size="2" value=""></td> <td><input name="imp_2" id="imp_2" size="4" value=""></td> </div> </tr>
Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...
Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...
Mi sono reso conto che il problema è la duplicazione della casse "factor", classe responsabile del calcolo q.ta*importo
quando clicco sul pulsante "Aggiungi", la riga viene correttamente duplicata, ma la classe factor nocodice:<td align="center"><input name="q1" class="uppercase factor" id="q1" size="1" value=""></td> <td align="center"><input name="iu1" class="uppercase factor" id="iu1" size="1" value=""></td> <td><input name="imp_1" id="imp_1"class="uppercase factor" size="4" value=""></td>
codice:<script> $(document).ready(function(){ var regex = /^(.*)(\d)+$/i; var cindex = 1; $('body').on('click', '.add', function() { var $tr = $(this).closest('.righe'); var $clone = $tr.clone(); cindex++; $clone.find(':text').val(''); $clone.attr('id', 'id'+(cindex) ); $clone.attr('name', 'name'+(cindex) ); $clone.find("*").each(function() { var id = this.id || ""; var name = this.name || ""; var match = id.match(regex) || []; if (match.length == 3) { this.id = match[1] + (cindex); this.name = match[1] + (cindex); } if($("img .add").length < cindex){ $('.add').addClass( 'addisable' ).removeClass( 'add' ) } }); $tr.after($clone); }) }); </script>
Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...
se ho ben capito, lo script funziona in questo modo:
ho provato a clonare l'attributo class in questo modocodice:$clone.find(':text').val(''); <----- ??? $clone.attr('id', 'id'+(cindex) ); <----- clona l'attributo id $clone.attr('name', 'name'+(cindex) ); <----- clona l'attributo name $clone.find("*").each(function() { <----- ??? var id = this.id || ""; <----- valorizza l'attributo id var name = this.name || ""; <----- valorizza l'attributo name var match = id.match(regex) || []; if (match.length == 3) { this.id = match[1] + (cindex); this.name = match[1] + (cindex); }
codice:$clone.find(':text').val(''); $clone.attr('id', 'id'+(cindex) ); $clone.attr('name', 'name'+(cindex) ); $clone.attr('class', 'class'+(cindex) ); <------ provato cosi $clone.find("*").each(function() { var id = this.id || ""; var name = this.name || ""; var class = this.class || ""; <-----provato cosi (ma var class è una parola riservata?) var match = id.match(regex) || []; if (match.length == 3) { this.id = match[1] + (cindex); this.name = match[1] + (cindex); }
Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...