javascript - 将文本区域符号限制为可见部分

标签 javascript html

有什么方法可以将文本区域输入的符号限制为仅可见部分吗?

我不想滚动,我已经为其指定了行数列,并且我希望用户不能输入太多可能出现滚动的字符。

当然我可以设置溢出:隐藏,但无论如何都会输入符号。限制字符数不是我的情况,因为不同的字符采用不同的宽度:例如 W 和 1。我需要这个逻辑,因为在文本区域中输入的数据用于某些打印报告,并且不可能在纸张中滚动。

我只找到了两种可能的解决方案:

  1. 使用一些平均数 人物。并以此限制 数字。这是非常粗糙的。因为 对于平均数量为 大字比平时更大呢 仍会隐藏一些数据。

  2. 使用输入的渲染 字符到一些单独的 div 和 计算它的宽度/高度。似乎 我会很慢而且不会 确保这是正确的实现。

最佳答案

您可以使用 JavaScript 检查 scrollHeight,如果大于“原始”高度,则 chop 文本,直到不再有滚动。代码如下:

function CheckScroll(oTextarea) {
    if (oTextarea.scrollHeight > oTextarea.offsetHeight) {
        while (oTextarea.scrollHeight > oTextarea.offsetHeight) {
            oTextarea.value = oTextarea.value.substr(0, oTextarea.value.length - 1);
         }
    }
}

并触发它:

<textarea cols="15" rows="3" onkeyup="CheckScroll(this);" onchange="CheckScroll(this);" onpaste="CheckScroll(this);"></textarea>

实时测试用例:http://jsfiddle.net/yahavbr/bNqVf/1/

关于javascript - 将文本区域符号限制为可见部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4954980/

相关文章:

javascript - 继续添加 n 维对象数组的最佳方法是什么?

javascript - 如何在 React Native 中进行搜索?

html - 允许垂直滚动(不剪切内容)

jquery - ujquery高度排列

javascript - 如何在没有更改功能的情况下在标签中显示 <select> 的当前值

javascript - 动态图转PDF

javascript - 在php中使用多个饼图

javascript - 使用 jQuery 取消选择选定区域

javascript - PhoneGap/Cordova for android 文件插件错误代码 1

java - 为什么我只能获取网站首页的HTML,而不能获取其他网站的HTML?