allora stampa direttamente tutti gli input, elimina la parte onclick, togli il controllo if($('.check_box:checked')
allora stampa direttamente tutti gli input, elimina la parte onclick, togli il controllo if($('.check_box:checked')
Infatti era proprio quello che volevo fare, ma non avendo conoscenze in js non sprei come fare, vado a tentativi...
intendi in questo modo ?
da così;
A così;codice:$(document).on('click', '.check_box', function(){ var html = ''; if(this.checked) { html = '<td>' + '<input type="checkbox" ' + 'id="'+$(this).attr('id')+'" ' + 'data-risposta="'+$(this).data('risposta')+'" ' + 'data-commenti="'+$(this).data('commenti')+'" ' + 'data-azioni="'+$(this).data('azioni')+'" class="check_box" checked />' + '</td>'; html += '<td>'+$(this).data("categoria")+'</td>'; html += '<td>'+$(this).data("sottocategoria")+'</td>'; html += '<td>'+$(this).data("domanda")+'</td>'; html += '<td>' + '<select name="risposta[]" id="risposta_'+$(this).attr('id')+'" class="form-control">' + '<option value="1">SI</option>' + '<option value="2">NO</option>' + '<option value="3">N/A</option>' + '</select>' + '</td>'; html += '<td>' + '<input type="text" name="commenti[]" class="form-control" value="'+$(this).data("commenti")+'" />' + '</td>'; html += '<td>' + '<input type="text" name="azioni[]" class="form-control" value="'+$(this).data("azioni")+'" />' + '<input type="hidden" name="hidden_id[]" value="'+$(this).attr('id')+'" />' + '</td>'; } $(this).closest('tr').html(html); $('#risposta_'+$(this).attr('id')+'').val($(this).data('risposta')); });
codice:html = '<td>' + '<input type="checkbox" ' + 'id="'+$(this).attr('id')+'" ' + 'data-risposta="'+$(this).data('risposta')+'" ' + 'data-commenti="'+$(this).data('commenti')+'" ' + 'data-azioni="'+$(this).data('azioni')+'" class="check_box" checked />' + '</td>'; html += '<td>'+$(this).data("categoria")+'</td>'; html += '<td>'+$(this).data("sottocategoria")+'</td>'; html += '<td>'+$(this).data("domanda")+'</td>'; html += '<td>' + '<select name="risposta[]" id="risposta_'+$(this).attr('id')+'" class="form-control">' + '<option value="1">SI</option>' + '<option value="2">NO</option>' + '<option value="3">N/A</option>' + '</select>' + '</td>'; html += '<td>' + '<input type="text" name="commenti[]" class="form-control" value="'+$(this).data("commenti")+'" />' + '</td>'; html += '<td>' + '<input type="text" name="azioni[]" class="form-control" value="'+$(this).data("azioni")+'" />' + '<input type="hidden" name="hidden_id[]" value="'+$(this).attr('id')+'" />' + '</td>'; } $(this).closest('tr').html(html); $('#risposta_'+$(this).attr('id')+'').val($(this).data('risposta'));
intendo che quello che stampi con l'evento onclick lo devi stampare subito all'inizio, eliminando poi evento e contenuto
non puoi proprio farmi un esempio con del codice ?
basta un copia e incolla.
Ho provato come hai scritto, mi visualizza un record comprensivo di input e select ma non itera i dati, non stampa l'elenco dei record, i dati della tabella
Immagino...
per il momento grazie mille per la collaborazione
questa è l'idea. non ho potuto provarlo, vedi se funge.
codice:$(document).ready(function(){ function fetch_data() { $.ajax({ url:"select.php", method:"POST", dataType:"json", success:function(data) { var html = ''; for(var count = 0; count < data.length; count++) { html += '<tr>'; html = '<td>' + '<input type="hidden" ' + 'id="'+$(this).attr('id')+'" ' + 'data-risposta="'+$(this).data('risposta')+'" ' + 'data-commenti="'+$(this).data('commenti')+'" ' + 'data-azioni="'+$(this).data('azioni')+'" class="check_box" />' + '</td>'; html += '<td>'+$(this).data("categoria")+'</td>'; html += '<td>'+$(this).data("sottocategoria")+'</td>'; html += '<td>'+$(this).data("domanda")+'</td>'; html += '<td>' + '<select name="risposta[]" id="risposta_'+$(this).attr('id')+'" class="form-control">' + '<option value="1">SI</option>' + '<option value="2">NO</option>' + '<option value="3">N/A</option>' + '</select>' + '</td>'; html += '<td><input type="text" name="commenti[]" class="form-control" value="'+$(this).data("commenti")+'" /></td>'; html += '<td><input type="text" name="azioni[]" class="form-control" value="'+$(this).data("azioni")+'" /><input type="hidden" name="hidden_id[]" value="'+$(this).attr('id')+'" /></td></tr>'; } $('tbody').html(html); } }); } fetch_data(); $('#update_form').on('submit', function(event){ event.preventDefault(); $.ajax({ url:"multiple_update.php", method:"POST", data:$(this).serialize(), success:function() { alert('Dati aggiornati'); fetch_data(); } }) }); });
Grazie davvero Vincent.Zeno,
purtroppo il tuo codice non funzionava, ma modificandolo un pò sono riuscito ad ottenere quasi tutto quello che volevo, adesso mi rimane la parte più complicata...
Il problema è la valorizzazione della select, finchè bisogna tirare fuori la variabile all'interno del campo di input non ho avuto problemi, ma con la select come faccio ?
In realtà il mio desiderio era far venire fuori un gruppo di radio button (SI=1, NO=2, N/A=3) ma sinceramente non riesco proprio a capire come lavorizzarli.
In questo momento funziona tutto ma la select non legge il valore del record proponendo ovviamente la prima <option> "SI"
Ecco il codice come l'ho modificato;
codice:$(document).ready(function(){ function fetch_data() { $.ajax({ url:"select.php", method:"POST", dataType:"json", success:function(data) { var html = ''; var progressivo = 1; for(var count = 0; count < data.length; count++) { html += '<tr>'; html +='<td>'+progressivo+++'</td>'; html += '<td>'+data[count].categoria+'</td>'; html += '<td>'+data[count].sottocategoria+'</td>'; html += '<td>'+data[count].domanda+'</td>'; html += '<td>' + '<select name="risposta[]" id="risposta_'+data[count].id+'" class="form-control">' + '<option value="1">SI</option>' + '<option value="2">NO</option>' + '<option value="3">N/A</option>' + '</select>' +'</td>'; html += '<td><input type="text" name="commenti[]" class="form-control" value="'+data[count].commenti+'"></td>'; html += '<td>' + '<input type="text" name="azioni[]" class="form-control" value="'+data[count].azioni+'" />' + '<input type="hidden" name="hidden_id[]" value="'+data[count].id+'" />' + '</td></tr>'; } $('tbody').html(html); } }); } fetch_data(); $('#update_form').on('submit', function(event){ event.preventDefault(); $.ajax({ url:"multiple_update.php", method:"POST", data:$(this).serialize(), success:function() { alert('I dati sono stati aggiornati'); fetch_data(); } }) }); });
che non funzionasse ne ero quasi certo , è solo una bozza a tuo uso e consumo.
valorizzare le option e diverso che popolare i radio. quale dei due vuoi usare?
qui spero che intervenga killerworm che sa meglio cosa fare, io ho solo dato un'indicazione di direzione