[Javascript] Disabilitare campo input quando si aggiunge riga nuova

  • Creatore Discussione Creatore Discussione elpirata
  • Data di inizio Data di inizio

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Ciao a tutti,
avrei bisogno del vostro supporto per risolvere un problema che ho con un tabella che genera grazie a javascript righe nuove al clic su un icona:

in sostanza ho questa tabella:
HTML:
<table id="commessa">
<tbody>

<tr>
<td><b>Intervento</b></td>
<td><b>Fornitore</b></td>
<td><b>Q.t&agrave;</b></td>
<td><b>Unitario</b></td>
<td><b>Sconto %</b></td>
<td><b>Totale</b></td>
<td><b>Aggiungi</b></td>
</tr>

<tr class="righe">
<td><input type="text" name="itr1" id="itr1" class="t1" required="required" size="30" placeholder="Max 49 caratteri" maxlength="49" ></td>
<td><input type="text" name="for1" id="for1" class="t1" size="10"></td>
<td><input type="text" name="q1" required="required" class="t2 somma" onKeyUp="SommaRiga(1)" id="q1" size="3" value="0.0" placeholder="0"></td>
<td><input type="text" name="iu1" class="t2 somma" onKeyUp="SommaRiga(1)" onBlur="Format(1)" id="iu1" size="6" value="0.0" placeholder="0.00"></td>
<td><input type="text" name="sc1" class="t2 somma" onKeyUp="Virgola(1)" id="sc1" size="8" value="0.0" placeholder="sconto"></td>
<td><input type="text" name="imp_1" id="imp_1" class="t2 somma" size="8" value="0.0" placeholder="0.00" readonly></td>
<td><img src="images/add.png" name="add1" width="16" height="16" id="add1" class="add"></td>
</tr>

<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td>Tot. Generale</td>
<td><input type="text" name="totale" class="t2" id="totale" size="7" value="" placeholder="0.00" readonly></td>
</tr>

</tbody>
</table>

questo è invece il codice javascript che permette la creazione di nuove righe:

PHP:
$(document).ready(function(){
var regex = /^(.*)(\d)+$/i;
var cindex = 1;
    
    $('body').on('click', '.add', function() {
    cindex++;
    
    if(cindex<=15){
    var newRow = '<tr class="righe"><td><input type="text" name="itr'+cindex+'" id="itr'+cindex+'" class="t1" size="30" placeholder="Max 49 caratteri" maxlength="49"></td><td><input type="text" name="for'+cindex+'" id="for'+cindex+'" class="t1" size="10"></td><td><input type="text" name="q'+cindex+'" class="t2 somma" id="q'+cindex+'" size="3" value="0.0" onkeyup="SommaRiga('+cindex+')" placeholder="0"></td><td><input type="text" name="iu'+cindex+'" class="t2 somma"  onBlur="Format('+cindex+')" onkeyup="SommaRiga('+cindex+')" id="iu'+cindex+'" size="6" value="0.00" placeholder="0.00"></td><td><input type="text" name="sc'+cindex+'" class="t2 somma" onkeyup="Virgola('+cindex+')" id="sc'+cindex+'" size="8" value="0.0" placeholder="sconto"></td><td><input type="text" name="imp_'+cindex+'" id="imp_'+cindex+'" class="t2 somma" size="8" value="0.0" placeholder="0.00" readonly></td><td><img src="images/add.png" name="add1" width="16" height="16" id="add'+cindex+'" class="add"></td></tr>'
    $("#commessa tbody tr").eq((cindex-1)).after(newRow)
    }else{
    alert('Non puoi inserire più di 15 righe');
    return false;
    }
        $('.add').not(':last').addClass( 'addisable' ).removeClass( 'add' )
        }).on('focus','.somma', function(){
    $(this).not('input[name^="imp_"]').val('')
    })
});
function Format(ele){
    var valore = ($("#iu"+ele).val()*1)
    $("#iu"+ele).val(valore.toFixed(2))
}

function Virgola(nele){
    var cambia = $("#sc"+nele).val().replace(/\,/g,'.')
    $("#sc"+nele).val(cambia)
    SommaRiga(nele)
}

function SommaRiga(num){
var tot = 0
    var qt = $("#q"+num).val()
    var unitario = $("#iu"+num).val()
    var sc = $("#sc"+num).val()
    var Tot = (qt*1*unitario*1)
    var impsc = (Tot/100*sc)
    var somma = (Tot-impsc)
    if(somma>0){
        $("#imp_"+num).val(somma.toFixed(2))
    }else{
        $("#imp_"+num).val('')
        $("#iu"+num).val('')
    }
    var elem = $('input[name^="imp_"]')
    for(i=0; i<elem.length;i++) {
    tot += (elem.eq(i).val()*1)
    };
    $("#totale").val(tot.toFixed(2))
    //alert(num)
}
</script>

<style type="text/css">
.add{cursor:pointer;}
.addisable{opacity:0.5;}
.remove{cursor:pointer; visibility:visible;}
.removedisable{visibility:hidden;}
.uppercase{border:#999 1px solid;}
#totale{font-weight: bold;border: 1px groove #900;}
</style>

vorrei poter modificare lo script facendo in modo che non appena l'utente inserisce una nuova riga, i campi di quella precedente vengano posti in uno stato di readonly e vorrei aggiungere accanto all'icona

HTML:
<td><img src="images/add.png" name="add1" width="16" height="16" id="add1" class="add"></td>

un'altra icona che permetta, qual'ora l'utente necessiti di modificare le righe precedenti, di abilitarne l'edit

Spero possiate darmi una mano

Grazie
 

Discussioni simili