Nur zum Spaß möchte ich einfache Textformatierungstools für ein Textfeld erstellen. Um zu beginnen, möchte ich in der Lage sein, hervorgehobenen Text in einem Textfeld mit ** einzuschließen, wenn er im Fettdruck formatiert werden soll (genau wie der Texteditor von Stackoverflow). Ich habe den folgenden Code geschrieben, der die meiste Zeit funktioniert, aber ein Fehler hat, den ich gleich erklären werde.
var tmpText = '';
$(document).ready(function(){
tmpText = '';
$('#btn_bold').click(function(){bold(tmpText);});
$('textarea').bind('mouseup', function(){
tmpText = '';
if(window.getSelection){
tmpText = window.getSelection().toString();
}else if(document.getSelection){
tmpText = document.getSelection().toString();
}else if(document.selection){
tmpText = document.selection.createRange().text;
}
});
});
function bold(str)
{
$('textarea').val($('textarea').val().replace(str,'**'+str+'**'));
}
fett
AA
Wenn Sie den ersten Buchstaben A markieren und fett machen, erhalten Sie das Ergebnis **A**A
. Aber wenn Sie den zweiten Buchstaben A markieren und fett machen, erhalten Sie immer noch **A**A
, anstatt A**A**
, da die Zeile des Codes $('textarea').val($('textarea').val().replace(str,'**'+str+'**'));
nicht ausreicht, um zu identifizieren, welchen Buchstaben A Sie fett haben möchten.
Was ist ein effizienter Weg, um markierten Text zu identifizieren und fett zu machen?