好吧,这个问题似乎很老了,但希望我的代码能帮助有需要的人!
没有简单的方法可以实现这一点,但是可以做到,检查DEMO。
我所做的是:
1. 固定 textarea 的高度
height: 10rem;
2. 假设有四行,然后 line-height= height/4 (根据需要自己计算)
3. 禁用滚动条
overflow: hidden
或overflow:auto
(两者都很好!)
4. 现在检查 '\n' 的数量是否超过所需的行数:
这是完整的 JS 结构:
$(function() {
BindHandlers();
count_of_new_line = 0; /*This variable is global*/
});
function CaretPosition(ctrl) { /*This is to get the current position of cursor*/
var CaretPos = 0;
if (document.selection) {
ctrl.focus();
var Sel = document.selection.createRange();
Sel.moveStart('character', -ctrl.value.length);
CaretPos = Sel.text.length;
} else if (ctrl.selectionStart || ctrl.selectionStart == '0')
CaretPos = ctrl.selectionStart;
return (CaretPos);
}
function BindHandlers() {
$('#text_area').on({
keyup: function(f) {
var search_value = $(this).val();
var cursorPosition = CaretPosition(document.getElementById('text_area'));
var search_value_before_current_cursor = search_value.substr(0, cursorPosition);
var latest_new_line = search_value_before_current_cursor.lastIndexOf("\n");
var keycode=f.keyCode;
if (keycode == 13) {
count_of_new_line = count_of_new_line + 1;
if (count_of_new_line > 3) {
var max_val = search_value.substr(0, latest_new_line);
$('#text_area').val(max_val);
search_value = max_val;
f.preventDefault();
}
}
}
})
}
希望这会有所帮助!