Ciao a tutti!![]()
Ho scritto un semplice script che dovrebbe fare:
1 Se 'click' sull'elemento editalo (appare un form)
2 Quindi non osservare più l'elemento
3 Quando viene premuto il bottone "salva" modifica l'elemento
4 Ri-osserva l'elemento, se viene premuto vai al passo 1, altrimenti non fare nulla
(il passo 2 perchè altrimenti cliccando anche su "input type text" viene eseguito il passo 3)
Il mio problema è che al passo 4 "altrimenti non fare nulla" non viene eseguito, ma ritorna sempre al
passo 1.. ??
ecco il passo 4:
element.observe('click', this._edit.bind(this, element));
Non aspetta il click!!! perchè?
ecco il breve codice: (ho messo un alert, per essere più chiaro...)
codice:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="./js/prototype.js"></script> <script type="text/javascript"> var edita = Class.create(); edita.prototype = { initialize : function (element) { element.observe('click', this._edit.bind(this, element)); }, _edit : function(element) { element.stopObserving('click'); var form = new Element('form'); form.name = "edit"; var input = new Element('input'); input.type = 'text'; input.value = element.textContent; var b = new Element('button'); b.innerHTML = "salva"; b.observe('click', this._salva.bind(this, element)); element.update(); element.insert(form); form.insert(input); form.insert(b); }, _salva : function(element) { var content = element.down('input').value; element.down('form').remove(); element.update(); element.innerHTML = content; alert("FIN QUI OK! MA ADESSO... NON ASPETTA L'EVENTO CLICK:"); element.observe('click', this._edit.bind(this, element)); } }; var a = function () { var es = new edita($("aaa")); } document.observe("dom:loaded", a); </script> </head> <body> <div id="aaa">CLICCAMI</div> </body> </html>

Rispondi quotando