在具有每行字符数限制和总行数限制的文本区域中包装单词

Wrapping a word in a textarea that has a per-line character limit and a total-line-number limit

我实现了以前的答案 given here,现在我需要自动将单词换行,而不是总是必须手动按回车键。有任何想法吗?我在这方面遇到了很多麻烦。

代码:

jQuery('#gift-message-whole-message').on('keypress', function (event) {
                        var text = jQuery('#gift-message-whole-message').val();
                        var lines = text.split('\n');
                        var currentLine = this.value.substr(0, this.selectionStart).split('\n').length;
                        if (event.keyCode == 13) {
                            if (lines.length >= jQuery(this).attr('rows')) return false;
                        } else {
                            if (lines[currentLine - 1].length >= jQuery(this).attr('cols')) {
                                return false;
                            }
                        }
                    });

这是the working fiddle你的案例。

我将 else 分支稍微修改如下:

        if (lines[currentLine - 1].length >= ($(this).attr('cols') - 1)) {
             $('textarea').val($('textarea').val() + "-\n");
//                return false; // prevent characters from appearing
        }

正如您在 fiddle 中看到的那样,当键入的文本达到 col 限制时,代码会添加一个 - 和一个新行。然后它在用户键入时在下一行继续。