Buenas; tengo una pagina en la que se despliegan una serie de datos, dentro de un <span>.
Para poder editarlos rapidamente, he creado una función Javascript en la que al pulsar sobre el texto, este se convierte en un campo input, y a su lado aparecen una imagen de validar y otra de cancelar.
Al darle a cancelar, el input se vuelve a convertir en texto (esto funciona bien), y al darle a validar en teoría, mediante ajax, el nuevo texto debería modificarse en la DB y aparecer en el <span>. Pues bien, al intentar hacer esto último no consigo recoger el texto que hay dentro del input.
Las funciones que estoy utilizando os las pongo a continuación, para ver si podeis ayudarme. Lo que está en negrita es donde el depurador del Firefox me dice que falla el asunto.
Código:
function aN(id){
// Cambia el texto por el input para editarlo
var texto = document.getElementById('t'+id).innerHTML;
var texto2 = '<input type=text name=i'+id+' size=30 value="'+texto+'" class=formi>';
texto2 = texto2 + '<img src=http://www.zonanime.com/archivos/guia/do.gif width=12 onclick=edit('+id+');> ';
texto2 = texto2 + '<img src=http://www.zonanime.com/archivos/guia/back.gif width=12 onclick=aN2('+id+',"'+escape(texto)+'")>';
document.getElementById('t'+id).innerHTML = texto2;
document.getElementById('t'+id).onclick = '';
}
function aN2(id,texto){
// Borra el formulario y regresa al texto original
document.getElementById('t'+id).innerHTML = unescape(texto);
document.getElementById('t'+id).onclick = 'aN('+id+')';
}
function edit(id){
// Edita el campo con el nuevo valor
var texto = document.getElementById('i'+id);
var url = 'admin.asp?acc=edit&c=cap&cid='+id+'&t='+unescape(texto)+'&uid='+getCookie('usrID');
alert(texto);
ajax.open("GET", url, true);
ajax.onreadystatechange = function(){
if (ajax.readyState==4){
var response = ajax.responseText;
alert(response);
if (response=='add') {
document.getElementById('out').innerHTML = 'Correctamente Editado <b>'+unescape(texto)+'</b>';
document.getElementById('t'+id).innerHTML = unescape(texto);
}else{
document.getElementById('out').innerHTML = 'Error al editar <b>'+unescape(texto)+'</b>';
}
}
}
ajax.send(null);
}
Gracias!