- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 SCEditor 上实现一些 maxlength 函数,它没有考虑原始 textarea maxlength 属性。
届时,我将使用 SelectionchangedEvent 处理程序来获取值并在必要时对其进行子字符串化,并将其替换为 SCEditor API 中的 val()。
到目前为止,这是可行的,但是 val() 函数将设置值并将脱字符号放在开头,因此如果用户继续写入,它将在顶部写入,然后对底部,并将插入符号放在顶部,比前一行高出一行。我不想这样!
所以我遇到了这样的解决方案:stackoverflow
不幸的是,这似乎不起作用:jsfiddle
var instance = $('textarea').sceditor({
plugins: 'bbcode',
width: '100%',
style: 'http://www.sceditor.com/minified/jquery.sceditor.default.min.css'
}).sceditor('instance');
$('#caretend').click(function() {
placeCaretAtEnd(instance);
});
function placeCaretAtEnd(el) {
el.focus();
if (typeof window.getSelection != "undefined"
&& typeof document.createRange != "undefined") {
var range = document.createRange();
range.selectNodeContents(el.getBody().get(0));
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (typeof document.body.createTextRange != "undefined") {
var textRange = document.body.createTextRange();
textRange.moveToElementText(el.getBody().get(0));
textRange.collapse(false);
textRange.select();
}
}
<link href="http://www.sceditor.com/minified/jquery.sceditor.default.min.css" rel="stylesheet"/>
<div><a href="#" id="caretend">Place caret at end</a></div>
<div><textarea></textarea></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.sceditor.com/minified/jquery.sceditor.bbcode.min.js"></script>
我在这里错过了什么吗?还是只是这个插件与功能冲突?
最后,我还在这里发现了一些有趣的帖子:stackoverflow但我不知道如何以预期的方式使用它。
非常欢迎任何建议,非常感谢。
最佳答案
好吧,终于找到了方法,希望这可以帮助将来的人!
这是我的解决方案,关于如何限制 SCEditor 上的输入长度
创建一个标志数组,用于检测 contenteditable 上的更改,我发现它比常见处理程序更有效且跨浏览器兼容。
var sceFlag = { "id1" : 0, "id2" : 0 (...) };
放置CaretAtEnd的函数:
function placeCaretAtEnd(instance){
var rangeHelper = instance.getRangeHelper();
var range = rangeHelper.cloneSelected();
if ('selectNodeContents' in range) {
var bodyChildren = instance.getBody()[0].children;
range.selectNodeContents(bodyChildren[bodyChildren.length - 1]);
range.collapse(false);
rangeHelper.selectRange(range);
}
如果超过最大长度,则对子字符串值进行函数:
function SCElength(instance,len){
var d = len - instance.val().length;
if(d<0){
instance.val(instance.val().substr(0,len));
placeCaretAtEnd(instance);
}
监听焦点和模糊事件并检查 contenteditable 是否已更改的函数:
function SCEFocusBlur(instance,len,id){
instance.getBody()
.focus(function() {
sceFlag[id] = 1;
checkSCEInput(instance,len,id);
$(this).data("initialText", $(this).html());
});
instance.getBody()
.blur(function() {
sceFlag[id] = 0;
if ($(this).data("initialText") !== $(this).html()) {
checkSCEInput(instance,len,id);
}
});
当标志为 1 时递归检查值的函数
function checkSCEInput(instance,len,id){
if(sceFlag[id] = 1){
SCElength(instance,len);
setTimeout(function() {
checkSCEInput(instance,len);
}, 1000);
}
然后您所要做的就是像这样创建 sceditor :
$("textarea").sceditor({
plugins: "bbcode",
style: "css/sceditor.min.css",
width: "auto",
height: "110",
toolbar:"bold,italic,underline,strike,subscript,superscript|left,center,right,justify|size,color,removeformat|bulletlist,orderedlist,horizontalrule,emoticon",
});
并使用实例、maxlength int 和与标志关联的 id 调用 SCEFocusBlur:
SCEFocusBlur($("textarea").sceditor('instance'),maxlength,id);
任何想法都非常欢迎!祝你有美好的一天:)
关于javascript - SCEditor 插入符号位于 iframe 内容可编辑的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532116/
我正在使用真正简单的所见即所得编辑器SCEditor对于我的网站。 我想知道如何准确获取文本区域中的当前字符数,然后将它们输出到其下方? 我asked on the github但似乎没有多少人使用它
在我当前的应用程序中,我创建了一个自定义 BBCode 编辑器 - 我使用了许多 BBCode 扩展,并且有其他集成要求,这使得我必须使用自己的编辑器而不是现成的编辑器。 创建此代码、确保生成的 BB
我正在尝试使用以下代码从我的 SCEditor textarea 中获取值: var fbeschreibung = ''; $(function() { // Replace all tex
我正在尝试插入引号,然后将光标移动到编辑器的末尾。目前,我插入引号,光标在引号内结束,所以如果您开始输入,用户将添加到引号中,这不是我希望发生的事情 我试过查看他们的 documentation弄清楚
如何申请mCustomScrollbar至 SCEditor ? This到目前为止我已经尝试过: HTML Apply scrollbar JS $("#editor").sceditor({
我目前正在为一个项目评估基于 javascript 的 BBCode 编辑器。SCEditor看起来真的很棒并且有很多有用的功能。 但是有人能告诉我如何使用本地化吗?我找不到任何本地化文件,所以我不知
我正在尝试在 SCEditor 上实现一些 maxlength 函数,它没有考虑原始 textarea maxlength 属性。 届时,我将使用 SelectionchangedEvent 处理
我最近遇到了这个BBCode (公告板代码)编辑名为SCEditor .这是我发现的第一个,所以我开始使用这个,但我对解析器和其他东西并不十分熟悉。我需要它来在我的网站上显示新闻。所以基本上: 管理员
有谁知道SCEditor中的API是哪种方法或者如何使用?这样它将输入的 BBcode 解析为 HTML,而不仅仅是解析文本区域? 我知道SBBCodeParser ,但我要求用 JS 而不是 PHP
大家好,我对 javascript 和 jquery 非常陌生,所以请耐心等待,我正在尝试为我的网站评论系统制作一个多引号系统。顺便说一句,SCEditor 是这样的:http://www.scedi
我正在使用SCEditor我正在尝试根据 this page 上指定的表情符号选项设置我自己的自定义表情符号. 所以我这样调用它: $(document).ready(function() {
我正在寻找一个修复程序来获得 Material Design Light与使用 SCEditor 的 MyBB 合作,一个 JS 所见即所得的编辑器。存在冲突,因为 MDL 添加了破坏编辑器文本框的布
我有一个 MyBB 论坛,其中默认包含 SCEditor 作为所见即所得编辑器。 SCEditor 不是为拖放而设计的,因此对于 IE、Safari 和 Chrome,如果您尝试将图像拖到字段中,整个
TL;DR SCEditor 对列表项使用[li]test[/li]。为了使其与 VB 兼容,我想将其更改为 [*]test。但我的方法并不完全有效。我可以让编辑器为列表项插入 [*] 。然而,它们的
我是一名优秀的程序员,十分优秀!