私はユーザーの入力をフィルタリングします。改行を削除し、その長さを制限する。'入力'イベントのテキストエリアの値をフィルタリングする
2つの方法を試しました。
https://jsfiddle.net/mj111/356yx1df/3/
HTML
<div>
<textarea id="text1" placeholder="write down"></textarea>
</div>
<div>
<textarea id="text2" placeholder="write down"></textarea>
</div>
スクリプト
document.getElementById('text1')
.addEventListener('input', function (evt) {
evt.preventDefault(); // prevent value change
const msg = evt.target.value.replace(/\n/g, '')
if (msg.length <= 10) {
document.getElementById('text1').value = msg
}
})
document.getElementById('text2')
.addEventListener('input', function (evt) {
const msg = evt.target.value.replace(/\n/g, '').slice(0, 10)
document.getElementById('text2').value = msg
})
最初のものは機能していません。 preventDefaultが機能しないためです。 mdn doc saysとして。 'input'イベントは取り消しできません。
ですから、2番目の方法を試しました。テキストエリアの値を上書きするだけです。
私はこれを行うより良い方法があると思います。誰かが良いアイデアを持っているなら、答えてください。
だから、maxLengthのにテキストボックスを使うのか?改行なし、長さを制限するコードなし。値の変更に問題があり、カーソルジャンプで問題が発生します。 – epascarello
@epascarelloもう1つはカーソルのジャンプですか? –