// editing inline delle tabelle
/*
// al primo click di un elemento con classe edit
// circonda la tabella con un tag form e appendi i bottoni per l'invio ed il reset
// memorizza tutti i valori
// sostituisci gli span con un input con name pari all'id dello span e value pari al testo dello span
// all'invio della form fai una richiesta ajax e inviando name e value degli input sottoforma di una stringa
// ritorna il nuovo valore dell'elemento nel posto giusto
// al reset ripristina i valori non modificati
*/
$(document).ready(function(){
function memorizzaValori(){
vecchiValori = new Array();
$('.edit').each(function(i){
vecchiValori[i] = $(this).attr("id")+"|"+$(this).text();
});
return vecchiValori;
}
var cont = 0;
$('.edit').live('click',function(){
memorizzaValori();
idSpan = $(this).attr("id");
testoSpan = $(this).text();
cont++;
if(cont<=1){ // dopo il primo click appendi la form intorno alla tabella e aggancia il submit
$(this).parents("table").wrap("<form action=\"#\" id=\"update\"></form>");
$("<input type=\"reset\" id=\"resetta\" value=\"annulla\" onClick=\"annulla($(this));\" />").insertAfter($(this).parents("table"));
$("<input id=\"lancia\" type=\"submit\" value=\"salva i dati\" />").insertAfter($(this).parents("table"));
}
/* TO DO: size dell'input */
$(this).replaceWith("<input type=\"text\" name=\""+idSpan+"\" class=\"text\" size=\"35\" value=\""+testoSpan+"\" />");
// sotituisci il testo con un input con value pari al testo
}); // fine bind
$('#lancia').live('click',function(){
var padre = $(this).parents("form");
id= "#"+padre.attr("id")+" input.text";
dati = new Array();
$(id).each(function(i){
dati[i] = $(this).attr("name")+"|"+$(this).val();
$(this).replaceWith("<span id=\""+$(id).attr("name")+"\" class=\"\edit\">"+settaValori(dati, $(id).attr("name"))+"</span>");
})
$("<div class=\"esito\">Dati Aggiornati!</div>").insertAfter("#update").fadeOut(1500);
return false;
});
$('#resetta').live('click',function(){
padre = $(this).parents("form")
id= "#"+padre.attr("id")+" input.text"
$(id).each(function(){
$(this).replaceWith("<span id=\""+$(id).attr("name")+"\" class=\"\edit\">"+resettaValori($(id).attr("name"))+"</span>");
});
});
function resettaValori(riferimento){ // trova il testo dello span con id = riferimento nei vecchi valori
for ( var i=0, len=vecchiValori.length; i<len; i++ ){
if (vecchiValori[i].split('|')[0] == riferimento)
return (vecchiValori[i].split('|')[1]);
}
};
function settaValori(dati, riferimento){
// fai una richiesta ajax e invia i dati allo script lato sever
// aggiorna i nuovi valori e lascia inalterati gli altri
$.ajax({
type: "POST",
url: "http://www.signalkuppe.com/
wp-content/editing/test.php",
data: "name="+dati+"",
success: function(html){
var temp = html.split(',') /* crea un array dei valori che torna lo script */
var posto = "#"+riferimento; /* appendi il valore nel posto giusto */
for ( var i=0, len=temp.length; i<len; i++ ){
if (temp[i].split('|')[0] == riferimento)
daRestituire = (temp[i].split('|')[1]);
}
$(posto).append(daRestituire); /* appendi il valore nel posto giusto */
}
});
return ""; /* non ritornare altro */
}
});
Segnalibri