jQueryを使用しても構わない場合、解決策は本当に簡単です。まず、テキストエリアの現在の値を変数に保存します。次にテキストエリアでinput
イベントを聞き、this.scrollHeight
とthis.clientHeight
を比較してスクロールバーがあるかどうかを確認します。その場合は、textareaの値を前の値に変更します。最後に、現在のtextarea値をlastValue
変数に代入します。
を参照してくださいコードスニペット:
var lastValue = $("textarea").val()
$("textarea").on("input", function(event) {
if (this.scrollHeight > this.clientHeight) {
$("textarea").val(lastValue)
}
lastValue = $("textarea").val()
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea></textarea>
ピュアJavaScriptのソリューション:
const textarea = document.querySelector("textarea")
var lastValue = textarea.value
textarea.addEventListener("input", function(event) {
if (this.scrollHeight > this.clientHeight) {
textarea.value = lastValue
}
lastValue = textarea.value
})
は全くJavaScriptを使用しないでください。たとえば、CSSを使用できます。 'overflow-x:hidden;' –
あなたはいつも自動拡張可能なテキスト領域を作ることができます - それはスクロールしません、それはオプションですか?私はそこであなたを助けることができた。 –
それは私の問題ではなく、代わりに私が必要とする**内部のテキストがオーバーフローするのを防ぐためです。同様に、私が知っておくべきことは、固定サイズのpx、可変サイズの文字ボックスからオーバーフローしたテキストの量と、それがテキストエリアの値にならないようにすることです –