私はこのコードを持っています
<div id="IIYBAGWNBC" contenteditable="true"></div>
そしてこれはjqueryで
$("#IIYBAGWNBC").text(function(index, currentText) {
return currentText.substr(0, 100);
});
ユーザーがcontenteditable
div
に100文字を超えて入力しないようにするにはどうすればよいですか。
keydown
で、要素の文字列の長さを数え、ユーザーが100文字を超えてフィードしようとした場合にユーザーを防ぐのは非常に簡単です。
$('div').on('keydown paste', function(event) { //Prevent on paste as well
//Just for info, you can remove this line
$('span').text('Total chars:' + $(this).text().length);
//You can add delete key event code as well over here for windows users.
if($(this).text().length === 100 && event.keyCode != 8) {
event.preventDefault();
}
});
説明:
keydown
paste
のcontenteditable
またはdiv
イベントで、length
のdiv
が100
に到達したかどうかを確認します。ユーザーがバックスペースキーをクリックしていない場合は、任意のキーをクリックするか、右クリックで貼り付けることで、ユーザーがより多くの文字を入力できないようにします。
上記の回答を使用してコードを一般化することで、このようなことを行いました。これにより、コンテンツ編集可能なdivの最大長を設定できます。
$("div[contenteditable='true'][maxlength]").on('keydown paste', function (event) {
var cntMaxLength = parseInt($(this).attr('maxlength'));
if ($(this).text().length === cntMaxLength && event.keyCode != 8) {
event.preventDefault();
}
});
HTMLは次のようになります
<div id="IIYBAGWNBC" contenteditable="true" maxlength="500"></div>
このようにして、コンテンツ編集可能なDiv要素のいずれかにmaxlenghtについて言及できます。これがお役に立てば幸いです。
単純に、javascriptなしでhtmlで行うことができます。
<div contenteditable="true" onkeypress="return (this.innerText.length <= 26)"> </div>