Salut, j'ai finalement réussi à créer une petite fonction vilainement codée mais qui marche :
Voilà pour les deux petits boutons

:
<img src=../Icones/previous.png id="back" width=23>
<img src=../Icones/next.png id="forward" width=23><br>
<textarea id=textarea rows=10 cols=7></textarea>
...et la fonction :
// fonction Previous et Next qui emploient le DOM pour emuler un ctrl+z et un ctrl+maj+z
function CancelableTextarea(textarea) {
if (!textarea) {
alert("CancelableTextarea needs a textarea as first paremeter!");
}
var currentlocation = this,
values = this.values = [textarea.value],
valueId = this.valueId = 0;
this.textarea = textarea;
textarea.onkeyup = function() {
if (this.value !== currentlocation.values[currentlocation.valueId]) {
if (this.value === currentlocation.values[currentlocation.valueId - 1]) {
--currentlocation.valueId;
} else if (this.value === currentlocation.values[currentlocation.valueId + 1]) {
++currentlocation.valueId;
} else {
currentlocation.values = currentlocation.values.splice(0, currentlocation.valueId + 1);
currentlocation.values.push(this.value)
currentlocation.next();
}
}
};
}
CancelableTextarea.prototype.previous = function() {
if (this.valueId > 0) {
--this.valueId;
this.textarea.value = this.values[this.valueId];
}
};
CancelableTextarea.prototype.next = function() {
if (this.valueId < this.values.length - 1) {
++this.valueId;
this.textarea.value = this.values[this.valueId];
}
};
// Créé les boutons dynamiquement, leur ajoute une fonction au click et finalement les ajoute au body
var test = new CancelableTextarea(document.getElementById('textarea'));
var back = document.getElementById('back');
var forward= document.getElementById('forward');
back.onclick = function() {
test.previous();
};
forward.onclick = function() {
test.next();
};
Le code est pas top mais ça marche (il reste des variables inutiles, vous ferez le ménage
Ce message a été modifié par MrPierre - 16 octobre 2010 - 08:43.