Résolu - Ajout de code dans un INPUT

Bonjour à tous,

Je vais commencer par vous expliquer le contexte. J’ai commencé à programmer un petit chat en Javascript / PHP / Mysql et j’aimerais bien rajouté des smileys.

Du coté PHP, pas de problème, je sais comment ça fonctionne. Par contre, du coté javascript je suis un peu peaumé.

L’idée c’est d’avoir des images des smileys et que quand on click dessus le code du smiley s’ecrit dans le champ texte ou le message est ecrit dedans (à la fin, car il peux y avoir du texte dedans).

Bref, si vous avez une idée :slight_smile:
Edité le 31/01/2008 à 09:58

Genre le truc de Clubic à droite du formulaire d’envoi de messages?

Si oui, bah te gène pas pour repomper hein :slight_smile:

C’est bien ça, mais ça semble plus complexe à utiliser que ce que j’avais en tête (Il ya tous pleins de references vers

textarea_reponse.bbcode

Et je ne trouve pas direct la definition de cette fonction :confused:

Donc, si quelqu’un à une façon de faire un truc semblable en plus facile…

Le voilà :

(function (a, b) {if (typeof document.selection != "undefined") {var c = "ie";} else {var c = "firefox";}var d;if (c == "ie") {d = document.selection.createRange().text;} else {var e = l.selectionStart;var f = l.selectionEnd;var g = l.scrollTop;var h = l.value.substring(0, e);var i = l.value.substring(f);d = l.value.substring(e, f);}if (m[a] != 1 && (b == 2 && d == "" || b == 1)) {var j = prompt("Entrer l'adresse URL :", "http://");}if (b == 1 && d == "" && j != null) {var k = prompt("Entrer le texte du lien :", "");}l.focus();if (b == 1 && j == null && (m[a] == undefined || m[a] == 0)) {} else if (b == 3) {if (c == "ie") {document.selection.createRange().text = a;} else {l.value = h + a + i;}l.focus();if (c == "firefox") {l.setSelectionRange(h.length + a.length, h.length + a.length);}} else {if (d != "") {if (c == "ie") {document.selection.createRange().text = "[" + a + (j != undefined ? "=" + j : "") + "]" + d + "[/" + a + "]";} else {l.value = h + "[" + a + (j != undefined ? "=" + j : "") + "]" + d + "[/" + a + "]" + i;}l.focus();if (c == "firefox") {l.setSelectionRange(h.length + a.length + 2 + (b == 1 ? 1 + j.length : 0), h.length + a.length + 2 + d.length + (b == 1 ? 1 + j.length : 0));}} else {if (m[a] == "undefined") {m[a] = 0;}if (b == 2 || b == 1 && k != null) {if (j != null) {if (c == "ie") {document.selection.createRange().text = "[" + a + (b == 1 ? "=" + j : "") + "]" + (b == 1 ? k : j) + "[/" + a + "]";} else {l.value = h + "[" + a + (b == 1 ? "=" + j : "") + "]" + (b == 1 ? k : j) + "[/" + a + "]" + i;}if (c == "firefox") {if (b == 1) {l.setSelectionRange(h.length + a.length + 3 + j.length, h.length + a.length + 3 + j.length + k.length);} else {l.setSelectionRange(h.length + a.length * 2 + 5 + j.length, h.length + a.length * 2 + 5 + j.length);}}}} else {if (m[a] == 1) {if (c == "ie") {document.selection.createRange().text = "[/" + a + "]";} else {l.value = h + "[/" + a + "]" + i;}m[a] = 0;} else {if (c == "ie") {document.selection.createRange().text = "[" + a + (b == 1 ? "=" + j : "") + "]";} else {l.value = h + "[" + a + (b == 1 ? "=" + j : "") + "]" + i;}m[a] = 1;}if (c == "firefox") {l.setSelectionRange(h.length + a.length + 3 - m[a] + (j != undefined ? 1 + j.length : 0), h.length + a.length + 3 - m[a] + (j != undefined ? 1 + j.length : 0));}}l.focus();}}if (g) {l.scrollTop = g;}})

je sais, c’est imbiffable :slight_smile: Utilise Firebug pour avoir plus d’informations, tu dois même pouvoir mettre un breakpoint dessus…

Ceci étant, ton code sera plus simple. Tu veux insérer à une position en particulier ? ou juste à la fin?

Si oui, ça ressemblera à :

text.value += “code du smiley”;

Oki,

Merci sans-nom :wink:

Finalement, j’ai utiliser la deuxième partie:


<IMG SRC="emote/happy.gif" ALT=":happy:" onclick="javascript: message.value+=':happy:'"></IMG>

Et ça fonctionne nickel :wink: