質問はかなり古いようですが、私のコードが困っている人を助けることを願っています!!
これを実現する簡単な方法はありませんが、可能です。 DEMOを確認してください。
私がやったことは次のとおり
です。 1.テキストエリアの高さを修正します 2.4
height: 10rem;
つの行があるとします。次に、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();
}
}
}
})
}
これが役立つことを願っています!!