我正在使用带有 bootstrap-wysihtml5 扩展的所见即所得编辑器 wysihtml5。
我正在构建一个字符计数器,并希望在达到最大长度时在编辑器区域上放置一个红色边框。
但是我怎样才能在 javscript 中选择 textarea?在源代码中,它不是文本区域,而是 iframe,并且没有唯一 ID 或任何东西。我实际上是在同一个页面上创建多个编辑器,所以我需要区分我选择的是哪一个。
我正在使用带有 bootstrap-wysihtml5 扩展的所见即所得编辑器 wysihtml5。
我正在构建一个字符计数器,并希望在达到最大长度时在编辑器区域上放置一个红色边框。
但是我怎样才能在 javscript 中选择 textarea?在源代码中,它不是文本区域,而是 iframe,并且没有唯一 ID 或任何东西。我实际上是在同一个页面上创建多个编辑器,所以我需要区分我选择的是哪一个。
以下解决方案如何(使用数据):
$($('.textarea').data("wysihtml5").editor
或者您可以通过this
事件中的引用访问编辑器对象:
$('.textarea').wysihtml5({
events: {
load: function() {
var editor = this;
$(editor.currentView.doc.body).on("keydown",function(event) {
var l = event.currentTarget.innerText.length;
if(l >= 50) {
$(editor.currentView.iframe).addClass('redborder');
$(editor.textareaElement).addClass('redborder');
} else {
$(editor.currentView.iframe).removeClass('redborder');
$(editor.textareaElement).removeClass('redborder');
}
});
}
}
});
问题是 onChange iframe 的内联样式会被覆盖,为此您必须使用一个重要的类:
.redborder {
border: 1px solid red !important;
}
这个解决方案至少适用于我的叉子:https ://github.com/Waxolunist/bootstrap3-wysihtml5-bower/
您必须测试哪个对象属性包含准确的长度值,因为 innerText 不包含任何标记。