/
690.txt
180 lines (133 loc) · 5.82 KB
/
690.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
* [CODE(HTMLa)@en[maxlength]] 属性 (HTML)
[1] [[HTML]] の [CODE(HTMLe)[[[input]]]] [[要素]]と
[CODE(HTMLe)@en[[[textarea]]]] [[要素]]の
[DFN[[CODE(HTMLa)[maxlength]] 属性]]は、
利用者が入力できる最大文字数を指定します。
[9]
:状態:[[W3C]] [[勧告]]、[[WHATWG]] [[WD]]
:[[要素型]]:
[CODE(HTMLe)@en[[[input]]]]、[CODE(HTMLe)@en[[[textarea]]]]
:[CODE(DOMa)@en[[[type]]]]:
[CODE(HTML)@en[[[text]]]]、
[CODE(HTML)@en[[[password]]]]、
[CODE(HTML)@en[[[email]]]]、
[CODE(HTML)@en[[[url]]]]、
[CODE(HTMLe)@en[[[textarea]]]]
:[[属性名]]:[CODE(HTMLa)@en[[[maxlength]]]]
([Q@en[maximum length]] ([Q[最大長]]) より)
:[[属性値]]:[[文字数]] (>>3)
:[[既定値]]:制限なし (>>4)
[2] 仕様書:
- [[HTML 4]]
-- [CODE(HTMLe)[input]] 要素 [CODE(HTMLa)[maxlength]] 属性
<IW:HTML4:"interact/forms.html#adef-maxlength">
- [[Web Forms 2.0]]
-- [CSECTION@en[2.5. Extensions to existing attributes]]
<IW:WF2:"#extensions0">
** 属性値
[3] この属性の値は [CODE(SGML)[[[NUMBER]]]] です。
最大の文字数を指定します。
[4] この属性は省略可能です。省略時は無制限と見なされます。 [SRC[HTML 4 17.4]]
** 数え方
[12]
[CODE(HTMLa)@en[[[maxlength]]]] [[属性]]の値は、
[[文字]]の[[数]] ([[符号位置]]の[[数]])
を制約します。
[SRC@en[WF2 2.5]]
[13]
[CODE(HTMLe)@en[[[textarea]]]] では、
[[改行]]は、 [CODE(HTMLa)@en[[[wrap]]]]
[[属性]]の[[値]]に依存して追加されるものも含め、
1つ2[[文字]] ([CODE(charname)@en[[[CR]]]]
[CODE(charname)@en[[[LF]]]]) と数えます。
[SRC@en[WF2 2.5、2.14]]
[17]
この[[属性]]は[[初期値]] ([CODE(DOMa)@en[[[defaultValue]]]])
には影響[['''してはなりません''']]。
[[利用者]]の入力や[[妥当性検証]]にのみ影響[['''しなければなりません''']]。
[SRC@en[WF2 2.5]]
** 安全性
[16]
[[フォーム処理エージェント]]は、
悪意の有る[[利用者]]や[[不適合]]の[[利用者エージェント]]を考慮し、
[CODE(HTMLa)@en[[[maxlength]]]] [[属性]]が指定されていたとしても、
必要ならば入力値の長さの検査を[['''するべきです''']]。
[SRC@en[WF2 2.5]]
[[#comment]]
** 歴史
[6]
HTML 4 DTD の[[注釈]] (参考) には
[Q[max chars for text fields]]
と説明があります。
[10]
[CODE(HTMLa)@en[[[maxlength]]]] [[属性]]は、
[[HTML 4]] では [CODE(HTMLe)@en[[[input]]]]
[[要素]]の [CODE(HTML)@en[[[text]]]] と
[CODE(HTML)@en[[[password]]]] にだけ定義されていました。
[11]
[[Web Forms 2.0]] では、
[CODE(HTMLe)@en[[[input]]]] の
[CODE(HTML)@en[[[email]]]] と
[CODE(HTML)@en[[[url]]]]
にも適用されるようになりました。
また、 [CODE(HTMLe)@en[[[textarea]]]]
にも定義されました。
** 実装
[8]
[CITE[Bug 345267 - If the initial text input value is longer than maxlength it is truncated.]] <https://bugzilla.mozilla.org/show_bug.cgi?id=345267>
([[名無しさん]] [WEAK[2006-07-22 04:28:31 +00:00]])
[[#comment]]
** 関連
[5] この属性の値は、 [CODE(HTMLa)[[[size]]]] 属性の値を超えても構いません。
その場合は、 UA は何らかの scroll の仕組みを用意するべきです。
[SRC[HTML 4 17.4]]
[15]
[CODE(HTMLa)@en[[[maxlength]]]] が
[CODE(HTML)@en[[[text]]]], [CODE(HTML)@en[[[password]]]],
[CODE(HTML)@en[[[email]]]], [CODE(HTML)@en[[[url]]]],
[CODE(HTMLe)@en[[[textarea]]]]
に対して与えられ、その[[制御子]]が指定された[[数]]よりも多くの[[符号位置]]を含み、
''しかもその[[値]]が[[既定値]]とは[[一致]]しない''なら、
[CODE(DOM)@en[[[tooLong]]]] [[妥当性検証誤り]]が[[報告]]されます。
[SRC@en[WF2 2.5]]
[[#comment]]
** 例
[18]
[PRE(HTML example code)[
<input type="email" maxlength="1" name="test"/>
]PRE]
この[[制御子]]は、[[値が選択されていない]]ときだけ[[妥当]]になります。
[SRC@en[WF2 2.5]]
;; 長さが1の[[電子メイル・アドレス]]は存在しないからです。
[[#comment]]
** メモ
[7]
[[正規化]]や[[提出]]時の[[文字コード]]の変換によって、
同じ[[文字列]]のはずでも長さが変わって[CODE(HTMLa)@en[[[maxlength]]]]の制限を満たさなくなることがあります。
[14]
[CODE(HTML)@en[[[email]]]] や
[CODE(HTML)@en[[[url]]]]
で [CODE(HTMLa)@en[[[maxlength]]]]
[[属性]]を使うことは、
実際に[[フォーム処理エージェント]]で制限がある場合を除き、
[[非推奨]]とされています。
[[電子メイル・アドレス]]や [[URI]]
は[[著者]]の考える以上に長いことがざらにあるからです。
[SRC@en[WF2 2.5]]
[[#comment]]
* メモ
[32] [CITE['''['''whatwg''']''' Constraint validation for maxlength]]
([TIME[2010-07-24 16:00:43 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-July/027257.html>
[33] [CITE[IRC logs: freenode / #whatwg / 20100906]]
( ([TIME[2010-09-23 19:52:11 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20100906#l-844>
[34] [CITE@en[Web Applications 1.0 r6413 Semi-allow <input type=number maxlength> for legacy reasons.]]
( ([TIME[2011-08-11 08:54:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6412&to=6413>
[35] [CITE[maxlengthを使ってはいけない。特にパスワード入力欄で使っちゃ駄目! #UI #JavaScript #HTML - Qiita ''''''[''''''キータ'''''']'''''']]
( ([TIME[2013-04-18 05:33:00 +09:00]] 版))
<http://qiita.com/items/d462a05c113b8e063736>
[36] [CITE@ja-JP[Internet Explorer 11 で contenteditable 属性や maxlength 属性を設定した要素で日本語入力ができないことがある]]
( ([TIME[2014-01-29 01:26:22 +09:00]] 版))
<http://support.microsoft.com/kb/2922126/ja>