【发布时间】:2012-10-21 09:43:39
【问题描述】:
只是为了好玩,我想为 textarea 构建简单的文本格式化工具。首先,如果要采用粗体格式(就像stackoverflow的textarea编辑器一样),我希望能够用**将突出显示的文本括在textarea中。我编写了以下代码,大部分时间都可以运行,但它确实有一个错误,我稍后会解释。
<html>
<head>
<script type="text/javascript" language="javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
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+'**'));
}
</script>
</head>
<body>
<button type="button" id="btn_bold">bold it</button>
<textarea>AA</textarea>
</body>
</html>
因此,如果您突出显示第一个字母 A 并将其加粗,您将得到结果 **A**A。但是,如果您突出显示第二个字母 A 并将其加粗,您仍然会得到 **A**A,而不是 A**A**,因为代码行 $('textarea').val($('textarea').val().replace(str,'**'+str+'**')); 不足以识别要加粗的字母 A。
识别高亮文本并将其加粗的有效方法是什么?
【问题讨论】:
标签: javascript jquery