我正在开发自定义 CMS,并希望能够选择显示的 HTML 部分以在 textarea 中进行编辑,并将任何封闭标签替换为另一个标签。例如,我可能想选择一个段落元素并单击将其转换为 h3,而其他任何标签都保持不变。
我已经实现了 rangyinputs以允许对 textareas 进行 getSelection/replaceSelectedText 操作,到目前为止我有这个:
function add_html_tag(target_ID, replace_tag) {
$(target_ID).focus();
$(target_ID).replaceSelectedText('<' + replace_tag + '>' + $(target_ID).getSelection().text.replace(/(<([^>]+)>)/ig,"") + '</' + replace_tag + '>');
}
这可以正常工作,但它会从目标文本中删除所有标签,而不仅仅是封闭的标签,因此所选文本中的任何其他标签也将被删除。
任何想法,我认为它只涉及更改替换语句中的正则表达式。由于 textarea 只包含纯文本,因此我不能使用 jQuery 方法,例如 unwrap。显然,在 HTML 上进行这样的正则表达式操作很容易出错,但现在我假设用户正确选择了文本!