我需要检查用户输入的文本的宽度,如果超过最大值,则不允许任何进一步的输入。我知道如何使用当前字体和字体大小来测量div中文本的宽度。我用以下函数测试文本的宽度:
editor.on("change", function (ev) {
var imprintText = editor.getData();
var textWidth = measureText(imprintText);
var hfMaxImprintWidth = document.getElementById("<%=hfMaxImprintWidth.ClientID%>");
var maxWidth = hfMaxImprintWidth.value;
if (textWidth >= maxWidth) {
};
});
但我不知道如何防止其他字符被添加到textarea中。我还想将文本限制为一行(没有换行符或新段落)。有人可以帮我这个吗?谢谢!
答案 0 :(得分:0)
评论时间太长 - 多么合适。
听起来像我会通过使用解决方法解决的问题。例如,如果文本太长,请将CKEditor背景颜色设置为红色并防止保存。像一些网站做的评论 - 例如stackoverflow显示“太长了27个字符”。在保存时执行类似的消息:显示警告,警告用户他们有太多内容,但只留下字符数。
至于“没有换行符或新段落” - 这可能会有点复杂。高级内容过滤器可以轻松处理换行符,但对于一个段落仅限制我认为您可以做的是在保存期间再次检查并提醒用户。
至于自动欺骗,如何抓取key
事件并检查if (evt.data.keyCode === 13) {}
并从可编辑中删除新元素。
更好的是,如果输入键事件可取消,您也可以尝试evt.cancel()
完全忽略它。对不起,没有示例代码。