1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
| <!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<meta name="Author" content="Daniel Hagnoul" />
<title>Page type</title>
<style>
body {
background-color:#696969;
color:#000000;
font-family:sans-serif;
font-size:medium;
font-style:normal;
font-weight:normal;
line-height:normal;
letter-spacing:normal;
}
div,p,h1,h2,h3,h4,h5,h6,ul,ol,dl,form,table,img {
margin:0px;
padding:0px;
}
div#conteneur {
width:95%;
margin:12px auto;
padding:6px;
background-color:#FFFFFF;
color:#000000;
border:1px solid #999999;
font-size:0.8em;
}
.ajoutBalise { /* Cette classe est indispensable, mais elle peut être vide ! */
margin-top:12px;
margin-left:12px;
}
</style>
<script charset="CP-1252" src="../lib/jquery-1.4.2.min.js"></script>
<script>
/*
* Daniel Hagnoul
* Version 1.3.0 du 10 mars 2010 (2010-03-10)
* Version 1.0.0 du 16 mai 2009 (2009-05-16)
*/
$.dvjhTextAreaTagSelectedText = function(id, startTag, endTag, minTagLength, moveCursor) {
var obj = $("#"+id);
var s = ""; //renvoie une chaine vide par défaut
if (arguments.length != 5) return s;
for (var i = 0; i < arguments.length; ++i) {
if (arguments[i] == "undefined") return s;
}
if ((startTag.length < minTagLength) || (endTag.length < minTagLength)) return s;
if (obj[0].tagName != "TEXTAREA") return s;
//on est maintenant certain que obj[0] est bien un textarea
if (document.selection) {
//Internet Explorer
var range = document.selection.createRange();
s = range.text;
if (s.length > 0) {
var node = range.parentElement();
if (node.nodeName != "TEXTAREA") {
s = "";
} else if ((startTag.length > 0) && (endTag.length > 0)) {
range.text = startTag + s + endTag;
/* Ajustement de la position du curseur */
if (moveCursor == false) {
//le curseur reste a l'emplacement ou le texte a été selectionner
range = document.selection.createRange();
var pos = startTag.length + s.length + endTag.length;
range.moveStart('character', pos);
range.collapse();
range.select();
} else if (moveCursor == true) {
//le curseur va à la fin du texte
obj.select();
range = document.selection.createRange();
var pos = obj.val().length;
range.moveStart('character', pos);
range.collapse();
range.select();
}
}
}
} else if (obj[0].selectionStart != "undefined") {
//Firefox
//Firefox renvoie toujours une valeur, même si la sélection n'est pas dans this !
var startPos = obj[0].selectionStart;
var endPos = obj[0].selectionEnd;
//si les valeurs sont égales la sélection n'est pas dans le textarea !
if (startPos != endPos) {
s = obj.val().slice(startPos, endPos);
if ((startTag.length > 0) && (endTag.length > 0)) {
var scrollValue = obj.scrollTop();
var debut = obj.val().slice(0, startPos);
var fin = obj.val().slice(endPos);
obj.val(debut + startTag + s + endTag + fin);
/* Ajustement de la position du curseur */
if (moveCursor == false) {
//le curseur reste a l'emplacement ou le texte a été selectionner
var pos = debut.length + startTag.length + s.length + endTag.length;
obj[0].selectionStart = pos;
obj[0].selectionEnd = pos;
obj.scrollTop(scrollValue);
obj.focus();
} else if (moveCursor == true) {
//le curseur va à la fin du texte
obj.select();
var pos = obj.val().length;
obj[0].selectionStart = pos;
obj[0].selectionEnd = pos;
obj.scrollTop(obj.height());
obj.focus();
}
}
}
}
return s;
}
$(function(){
var minTagLength = 4;
$(".ajoutBalise").click(function(){
$.dvjhTextAreaTagSelectedText("message", $(this).attr("startTag"), $(this).attr("endTag"), minTagLength, false);
return false;
});
});
</script>
</head>
<body>
<div id="conteneur">
<p>Un texte sélectionable pour test</p>
<div style="margin:12px;">
<textarea id="message" style="width:400px; height:200px;"> La JM Corporate University est une Business School, Haute Institution de Commerce et de Management implantée au cur de la capitale européenne, située en périphérie, à Louvain-la-Neuve, dans un parc boisé de six hectares qui lui confère un rayonnement particulier. La mission de la JMCU Business School consiste à former des Managers responsables, ouverts à la connaissance et à la découverte des autres, rapidement opérationnels, dans un monde globalisé en perpétuelle évolution. Par cette mission, la JMCU entend, par un positionnement offensif, se placer comme une Business School Européenne de Commerce et de Management combinant exigence académique, expériences professionnelles et ouverture internationale, véhiculant aux diplômés des valeurs fondées sur laudace, louverture, lhumilité et léthique.</textarea>
<br />
<button class="ajoutBalise" type="button" startTag="[**]" endTag="[++]">Test 1</button>
<button class="ajoutBalise" type="button" startTag="[--]" endTag="[++]">Test 2</button>
<button class="ajoutBalise" type="button" startTag="[]" endTag="[++]">Test 3</button>
<input class="ajoutBalise" type="button" startTag="[$$$]" endTag="[+++]" value="Test 4" />
</div>
</div>
</body>
</html> |
Partager