Ajoutez les balises <b> </ b> au texte sélectionné dans une zone de texte

Comment créer un javascript pour faire ce qui suit – lorsque l'utilisateur clique sur le bouton "BOLD", le texte sélectionné obtient un "<b>" et un "</ b>" enveloppé autour de lui.

<form name="my"> <textarea name="textarea"></textarea><br /> <input type="button" value="bold" onclick="formatText ('b');" /> <input type="button" value="italic" onclick="formatText ('i');" /> <input type="button" value="underline" onclick="formatText ('u');" /> </form> 

Aidez-moi à créer java-script pour supporter presque un navigateur Web

Vous devez utiliser un éditeur de texte enrichi existant, ils sont configurables afin que vous ne puissiez donner aux utilisateurs que les fonctionnalités que vous souhaitez utiliser. Ils ont également l'avantage supplémentaire de travailler sur une gamme de différents navigateurs.

Un exemple de création de tinyMCE avec seulement Bold, Italic et Underline.

 tinyMCE.init({ // General options mode : "textareas", theme : "advanced", // Theme options theme_advanced_buttons1 : "bold,italic,underline" }); 

Essayez le script ci-dessous …

 <script> function formatText (key){ var elem = document.my.textarea; /*start of selection area*/ var start = elem.selectionStart; var end = elem.selectionEnd; var len = elem.value.length; var sel_txt = elem.value.substring(start,end); if (sel_txt != ""){ var begin_tag = "<"+key+">"; var close_tag = "</"+key+">"; var replace = begin_tag + sel_txt + close_tag; elem.value = elem.value.substring(0,start) + replace + elem.value.substring(end,len); } </script> 

J'ai essayé le script sur http://jsfiddle.net/VRqU3/ . S'il te plaît vérifie le.

J'espère que cela vous servira, merci,

Ce serait relativement simple si ce n'était pour IE <9, qui ne supporte pas les propriétés selectionStart et selectionEnd des éléments de la zone de texte. Voici une réponse précédente de la mienne en précisant comment faire ceci:

https://stackoverflow.com/a/10739034/96100

Essayez cette fonction:

 function formatText(tag) { var Field = document.getElementById('text'); var val = Field.value; var selected_txt = val.substring(Field.selectionStart, Field.selectionEnd); var before_txt = val.substring(0, Field.selectionStart); var after_txt = val.substring(Field.selectionEnd, val.length); Field.value = before_txt + '<' + tag + '>' + selected_txt + '</' + tag + '>' + after_txt; } 

Exemple: http://jsbin.com/ilecug/
Source: http://jsbin.com/ilecug/edit