input要素のmaxlength属性で、入力可能な最大文字数を指定できます。
<input maxlength="8">例として、上の例では8文字まで入力できる設定になっています。ですがこの属性を信頼しすぎてはいけません。
文字数がオーバーするケース
value属性により、最初からmaxlength以上の文字数を設定できます。
<input name="input__text" maxlength="8" value="foooooooooooooooo">JavaScriptで要素のvalueプロパティを変更する時も、maxlengthは効かないです。
const inputElem = document.getElementsByName('input__text')[0];inputElem.maxLength; // 8inputElem.value = 'internationalization';そもそもHTML機能による制限を取っ払うことは、Webエンジニアにとって朝飯前です。
inputText.removeAttribute('maxlength'); // これで制限がなくなる見かけ上文字数が足らないケース
「𩸽」(ホッケという魚)などのサロゲートペア文字は、1文字で長さ2文字分という扱いになってします。"𩸽𩸽𩸽𩸽"だけで8文字扱いなので、フォームの直接入力ではそれ以上文字を追加できません。
inputElem.maxLength; // 8inputElem.value = '𩸽𩸽𩸽𩸽';文字の中には、全く見えないものもあります。
- ゼロ幅スペース (
"\u200b") - 単語結合子 (
"\u2060") - ゼロ幅接合子 (
"\u200d") - ゼロ幅非接合子 (
"\u200c")
しかしながら、見えない文字であっても1つあたり1文字として扱われます。
inputElem.maxLength; // 8inputElem.value = 'abcdefg\u200b';出力は7文字に見えますが、フォームの直接入力ではそれ以上文字を追加できません。
参考リンク