Comment insérer du texte à la position actuelle du curseur d'une TextBox grâce à JQuery et JavaScript.
Processus
- Trouver la position actuelle du curseur
- Obtenir le texte à copier
- Placez le texte là-bas
- Mettre à jour la position du curseur
Ici, j'ai 2 TextBoxes et un bouton. Je dois cliquer sur une certaine position dans une zone de texte, puis cliquer sur le bouton pour coller le texte de l'autre zone de texte à la position de la zone de texte précédente. l'autre zone de texte à la position de la zone de texte précédente.
Le principal problème ici est d'obtenir la position actuelle du curseur où nous allons coller le texte.
//Textbox on which to be pasted
<input type="text" id="txtOnWhichToBePasted" />
//Textbox from where to be pasted
<input type="text" id="txtFromWhichToBePasted" />
//Button on which click the text to be pasted
<input type="button" id="btnInsert" value="Insert"/>
<script type="text/javascript">
$(document).ready(function () {
$('#btnInsert').bind('click', function () {
var TextToBePasted = $('#txtFromWhichToBePasted').value;
var ControlOnWhichToBePasted = $('#txtOnWhichToBePasted');
//Paste the Text
PasteTag(ControlOnWhichToBePasted, TextToBePasted);
});
});
//Function Pasting The Text
function PasteTag(ControlOnWhichToBePasted,TextToBePasted) {
//Get the position where to be paste
var CaretPos = 0;
// IE Support
if (document.selection) {
ControlOnWhichToBePasted.focus();
var Sel = document.selection.createRange();
Sel.moveStart('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ControlOnWhichToBePasted.selectionStart || ControlOnWhichToBePasted.selectionStart == '0')
CaretPos = ControlOnWhichToBePasted.selectionStart;
//paste the text
var WholeString = ControlOnWhichToBePasted.value;
var txt1 = WholeString.substring(0, CaretPos);
var txt2 = WholeString.substring(CaretPos, WholeString.length);
WholeString = txt1 + TextToBePasted + txt2;
var CaretPos = txt1.length + TextToBePasted.length;
ControlOnWhichToBePasted.value = WholeString;
//update The cursor position
setCaretPosition(ControlOnWhichToBePasted, CaretPos);
}
function setCaretPosition(ControlOnWhichToBePasted, pos) {
if (ControlOnWhichToBePasted.setSelectionRange) {
ControlOnWhichToBePasted.focus();
ControlOnWhichToBePasted.setSelectionRange(pos, pos);
}
else if (ControlOnWhichToBePasted.createTextRange) {
var range = ControlOnWhichToBePasted.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
</script>
0 votes
Je suppose que c'est possible parce que c'est la base des éditeurs de WYSISYG, comment le faire, je ne sais pas.
0 votes
Duplicata possible de Comment insérer un caractère au caret avec javascript ?
0 votes
Merci d'avoir posé cette question... maintenant je peux insérer "[version]" au curseur avec mon extension Chrome !
0 votes
Si vous recherchez un module simple avec un support d'annulation, essayez le module insérer-texte-textarea . Si vous avez besoin de la prise en charge d'IE8+, essayez l'option suivante insérer-texte-au-curseur paquet.