Originariamente inviato da cavicchiandrea
Un link ad una pagina pubblica c'è? E la chiama ajax quale sarebbe secondo te?
chiedo scusa, ho omesso la parte più importante
codice:
(function($){
$.tableEdit = function(parametri){
// dichiaro le variabili configurabili durante l'attivazione
var idTabella = '#'+parametri.tabella;
var scriptUrl = parametri.indirizzo;
var classeHover = parametri.classe;
var idForm = parametri.form;
var idInvio = parametri.invio;
var idResetta = parametri.resetta;
// aggiungi e rimuovi la classe per gestire l'hover sugli span
$('.edit').live('mouseover', function(){
$(this).addClass(""+classeHover+"");
});
$('.edit').live('mouseout', function(){
$(this).removeClass(""+classeHover+"");
});
var cont = 0;
$(""+idTabella+" .edit").live('click',function(){
idSpan = $(this).attr("id");
testoSpan = $(this).text();
lunghezzaSpan = testoSpan.length + 1;
cont++; // aumenta cont
if(cont<=1){ // dopo il primo click appendi la form intorno alla tabella e aggancia il submit
$(this).parents("table"+idTabella+"").wrap("<form action=\"#\" id=\""+idForm+"\"></form>");
$("<input type=\"reset\" id=\""+idResetta+"\" value=\"annulla\" />").insertAfter($(this).parents("table"));
$("<input id=\""+idInvio+"\" type=\"submit\" value=\"salva i dati\" />").insertAfter($(this).parents("table"));
} // fine if prima iterazione
$(this).replaceWith("<input type=\"text\" name=\""+idSpan+"\" class=\"text\" size=\""+lunghezzaSpan+"\" value=\""+testoSpan+"\" />");
// sotituisci il testo con un input con value pari al testo
}); // fine bind
$("#"+idInvio+"").live('click',function(){
var padre = $(this).parents("form");
id= "#"+padre.attr("id")+" input.text";
dati = new Array();
$(id).each(function(i){
// al click sostituisci tutti gli input aperti con degli span
// il valore degli span viene calcolato dalla funzione settaValori
// setta Valori riceve i dati da inviare e il name dell'input
dati[i] = $(this).attr("name")+"|"+$(this).val();
$(this).replaceWith("<span id=\""+$(id).attr("name")+"\" class=\"\edit\">"+settaValori(dati, $(id).attr("name"))+"</span>");
})
// fai comparire il div con la conferma del salvataggio dei dati
$("<div class=\"esito\">Dati Aggiornati!</div>").insertAfter("#"+idForm+"").fadeOut(1800);
MiaTabella = $(idTabella).clone(); // clona la nuova tabella
$("#"+idForm+"").replaceWith(MiaTabella); // sostituisci per intero lka form con la nuova tabella
cont=0; // resetta cont per far ripartire la logica di creazione della form
return false;
});
$("#"+idResetta+"").live('click',function(){
padre = $(this).parents("form")
id= "#"+padre.attr("id")+" input.text"
$(id).each(function(){ // ogni input text
// sostituiscilo con uno span con testo pari al suo value
$(this).replaceWith("<span id=\""+$(this).attr("name")+"\" class=\"\edit\">"+$(this).val()+"</span>");
});
});
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
// rimuovi il tag form
$.ajax({
type: "POST",
url: scriptUrl,
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 */
};
}
})(jQuery);