在动态创建的文本框中设置文本格式
Formatting text in dynamicaly created textboxes
我有jquery,它可以生成具有不同id的文本区域。现在我需要制作一些按钮来格式化该文本区域内的文本。例如:当用户单击某个文本区域,输入文本并单击"粗体"按钮时,只有该文本区域内的文本将变为粗体(在其他文本区域中将是正常的)。我确实设法用JS制作了这样的东西,但它太原始了(文本在所有文本框中都格式化了):(下面是一些示例代码:
<button id="bold">B</button>
<textarea id="ta_1">Some test text</textarea>
<textarea id="ta_2">Some test text</textarea>
我想说的是:一个按钮,乘以文本框。以ta_1输入文本并单击粗体,应仅加粗该 txtarea 中的文本。附加信息:所有 id 都以相同的单词开头,只是末尾的数字不同。
我觉得有一些简单的解决方案,只是想不通:D
实际上这是一个非常糟糕的做法,但你可以这样做,
var activeEl;
$("textarea").focus(function() {
activeEl = $(this);
});
$("#bold").click(function() {
$("textarea").css("font-weight", "");
activeEl.css("font-weight","bold");
});
演示
UPDATE-1:我不知道你为什么要这样做,但我建议你使用像elRTE这样的所见即所得编辑器
更新-2 :您可以在elRTE中对工具栏进行可视化,如果您希望编辑器只有一个"粗体"按钮,是的,您可以这样做,
$(document).ready(function() {
elRTE.prototype.options.panels.web2pyPanel = ['bold'];
elRTE.prototype.options.toolbars.web2pyToolbar = ['web2pyPanel'];
var opts = {
toolbar: 'web2pyToolbar',
}
var rte = $('#our-element').elrte(opts);
});
ELRTE 演示
我不确定这对用户功能来说是一个好主意,但它是可以做到的。您只需要记录"活动文本区域"somwhere。我建议使用.data()
.js小提琴
//disable the button until we have a target textarea to avoid confusion
$('#bold').attr('disabled','disabled');
//Record a new 'activeElement' each time user focuses a textarea
$('textarea').focus(function(e){
$('#bold').data('activeElement',e.target)
.removeAttr('disabled');//this first time we will enable the bold button
});
//retrieve the stored 'activeElement' and do something to it
$('#bold').click(function(){
var activeElement = $('#bold').data('activeElement');
$(activeElement).css('font-weight','bold');
});
大多数人希望"文本格式"按钮可以处理他们的选择。选择和范围超出了jQuery的范围,并且使用起来相当复杂。正如已经建议的那样,我建议使用许多精彩的所见即所得之一,例如tinyMCE。
Use document.activeElement
var activeEl;
$('#bold').mousedown(function()
{
activeEl = document.activeElement
});
$("#bold").click(function() {
//check activeElement
if(......){
activeEl .css("font-weight","bold");
}
});
不要忘记检查活动元素确切的文本区域
相关文章:
- 测试文本区域中的特定文本格式
- 使用jQuery重置文本,同时存在AJAX调用
- 防止Javascript注入(但保留文本格式和图像)
- 我有来自OpenWeatherMap API的风向数据,数据以0到360度表示.我想将其转换为文本格式
- 我可以重置文本输入而不清除它吗
- Ng模型在AngularJS中重置文本区域后未更新
- 设置要显示的文本格式的指令
- 在 JavaScript 中重置文本区域高度
- 阻止按钮重置文本框值
- IndexedDB:将 url 映射到接受的 markdown/HTML 文本格式标记的正确架构
- 阻止重置文本区域
- 时刻.js文本格式和类
- 在动态创建的文本框中设置文本格式
- 购物清单 Javascript 程序列表项的文本格式不正确
- 使用 drive.files.export (Drive API v3) + API 密钥以文本/纯文本格式获取公共 G
- 如何使用 jQuery 将段落的原始文本格式放入 HTML 段落元素中
- 如果文本格式化为 html,则使用 angularjs 显示更少/更多的文本
- 如何在打印时保留存储在数据库中的文本格式
- Google Apps脚本中Google文档中字符串的文本格式
- jQuery之后的文本格式问题