Tak dodaję zdarzenia:
Kod
function addEventSimple(obj,evt,fn) {
if (obj.addEventListener)
obj.addEventListener(evt,fn,false);
else if (obj.attachEvent)
obj.attachEvent('on'+evt,fn);
}
//(...)
addEventSimple(element,'dblclick',dd.changeText);
if (obj.addEventListener)
obj.addEventListener(evt,fn,false);
else if (obj.attachEvent)
obj.attachEvent('on'+evt,fn);
}
//(...)
addEventSimple(element,'dblclick',dd.changeText);
gdzie element to div w którym jest zwykły text przy pomocy inner HTML wprowadzony.
Tak wygląda funkcja chanegText:
Kod
changeText: function(){
var tmp = this.innerHTML.split(/</);
var Text = tmp[0];
var currentText;
if(tmp.length>0)
{
for(var i=1;i<tmp.length;i++)
{
currentText+=tmp[i];
}
}
else
currentText = '';
// this.innerHTML = '<input type="text" id="txt'+this.id+'" style="border:1px black dashed">';
var element = document.createElement('input');
element.setAttribute('id', 'txt'+this.id);
element.setAttribute('name', 'txt'+this.id);
element.setAttribute('type', 'text');
this.innerHTML = '';
this.appendChild(element);
element.value = Text;
element.style.border = '1px black dashed';
var textNew = document.getElementById('txt'+this.id).value;
removeEventSimple(this,'mousedown',dd.startDragMouse);
removeEventSimple(this,'dblclick',dd.changeText);
addEventSimple(document.getElementById('txt'+this.id),'change',dd.addText(document.getElementById('txt'+this.id).value,this));
},
var tmp = this.innerHTML.split(/</);
var Text = tmp[0];
var currentText;
if(tmp.length>0)
{
for(var i=1;i<tmp.length;i++)
{
currentText+=tmp[i];
}
}
else
currentText = '';
// this.innerHTML = '<input type="text" id="txt'+this.id+'" style="border:1px black dashed">';
var element = document.createElement('input');
element.setAttribute('id', 'txt'+this.id);
element.setAttribute('name', 'txt'+this.id);
element.setAttribute('type', 'text');
this.innerHTML = '';
this.appendChild(element);
element.value = Text;
element.style.border = '1px black dashed';
var textNew = document.getElementById('txt'+this.id).value;
removeEventSimple(this,'mousedown',dd.startDragMouse);
removeEventSimple(this,'dblclick',dd.changeText);
addEventSimple(document.getElementById('txt'+this.id),'change',dd.addText(document.getElementById('txt'+this.id).value,this));
},
Tak na marginesie, to może mi ktoś wytłumaczyć, czy można używać tej za komentowanej formy wpisania napisu do diva - bo ona też działa, ale przeczytałem w jednym miejscu, że może to jest błąd - tylko nie wiem w jakim sensie.
A tak wygląda aktualnie funkcja addText:
Kod
addText: function(txt,obj,currentTxt){
document.getElementById('label2').innerHTML = txt;
//obj.removeChild(document.getElementById('txt'+obj.id));
// addEventSimple(obj,'mousedown',dd.startDragMouse);
document.getElementById('label2').innerHTML = txt;
//obj.removeChild(document.getElementById('txt'+obj.id));
// addEventSimple(obj,'mousedown',dd.startDragMouse);
Jeszcze jedno mam pytanie, to tez próbowałem dodać do skryptu, ale już tutaj to poległem, a mianowicie w jaki sposób zrobić tak, że jak kliknę poza tym tekstem to usunie mi inputa i wróci do normalnego tekstu - czyli jak uruchomić funkcję addText, ale przez klikniecie poza polem input.
Próbowałem już
Kod
addEventSimple(document,'click',dd.addText);
Ale to nie działa, pomimo tego, że wcześniej usuwam zdarzenia dokumentu typu click tak więc nic raczej nie nadpisuje.
Będę wdzięczny za pomoc.