Javascript:检测文本区域已满

标签 javascript jquery textarea

我正在尝试检测文本区域何时变满以创建分页效果。但是,使用 .length 属性将不起作用,因为长单词会“跳转”到新行。

| I like to dooo|     displays as  | I like to     | 
| oooodle       |                  | dooooooodle   |

所以最终发生的情况是,在 .length 属性达到文本区域限制之前,文本区域总是耗尽空间。还有其他方法可以检测文本区域的填充度吗? Jquery 解决方案也很好。谢谢。

最佳答案

您可以尝试检查文本区域中是否出现了滚动条。 Here是一个简单的方法来做到这一点。最初使滚动条比您想要显示的最终高度短一行,然后在按键时检查滚动条是否已出现,然后等待输入下一个空格字符。输入空格字符后,立即执行以下操作: 1.删​​除空格字符, 2.增加文本区域高度一行徘徊(因此滚动条消失), 3. 创建一个新的文本区域并将焦点移至新的文本区域。

更新
Here is a demo 。我稍微改变了我的方法,这是代码:

标记

<textarea class="paginate"></textarea>

JS

$('textarea.paginate').live('keydown', function() {

    // scrollbars apreared
    if (this.clientHeight < this.scrollHeight) {

        var words = $(this).val().split(' ');
        var last_word = words.pop();
        var reduced = words.join(' ');
        $(this).val(reduced);
        $(this).css('height', '65px');

        $(this).after('<textarea class="paginate"></textarea>');
        $(this).next().focus().val(last_word);

    }

});

CSS

.paginate { height: 60px; width: 200px; display: block;}

关于Javascript:检测文本区域已满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6042115/

相关文章:

javascript - 使用包含 ":"(或其他特殊字符)的属性名称的 knockout

jquery 插入的 HTML 呈现为原始文本

html - 粘贴到文本区域时保留换行符

css - 在 IE、FF、Safari/Chrome 下一致调整 &lt;textarea&gt; 的大小

javascript - 无需点击按钮即可刷新 div

javascript - 如何旋转一个div

jquery - hideLoading方法在Fancybox 2函数中的什么位置

jquery - 如何更改 jQuery 网格中的标题高度?

javascript - 根据javascript中文本行数更改textarea的高度

javascript - 通过同一页面在 Facebook 上分享不同的图像和内容