line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
##---------------------------------------------------------------------------- |
2
|
|
|
|
|
|
|
## HTML Object - ~/lib/HTML/Object/DOM/ValidityState.pm |
3
|
|
|
|
|
|
|
## Version v0.2.0 |
4
|
|
|
|
|
|
|
## Copyright(c) 2021 DEGUEST Pte. Ltd. |
5
|
|
|
|
|
|
|
## Author: Jacques Deguest <jack@deguest.jp> |
6
|
|
|
|
|
|
|
## Created 2021/12/23 |
7
|
|
|
|
|
|
|
## Modified 2022/09/18 |
8
|
|
|
|
|
|
|
## All rights reserved |
9
|
|
|
|
|
|
|
## |
10
|
|
|
|
|
|
|
## |
11
|
|
|
|
|
|
|
## This program is free software; you can redistribute it and/or modify it |
12
|
|
|
|
|
|
|
## under the same terms as Perl itself. |
13
|
|
|
|
|
|
|
##---------------------------------------------------------------------------- |
14
|
|
|
|
|
|
|
package HTML::Object::DOM::ValidityState; |
15
|
|
|
|
|
|
|
BEGIN |
16
|
|
|
|
|
|
|
{ |
17
|
1
|
|
|
1
|
|
991
|
use strict; |
|
1
|
|
|
|
|
8
|
|
|
1
|
|
|
|
|
31
|
|
18
|
1
|
|
|
1
|
|
10
|
use warnings; |
|
1
|
|
|
|
|
12
|
|
|
1
|
|
|
|
|
28
|
|
19
|
1
|
|
|
1
|
|
5
|
use parent qw( Module::Generic ); |
|
1
|
|
|
|
|
12
|
|
|
1
|
|
|
|
|
8
|
|
20
|
1
|
|
|
1
|
|
61
|
use vars qw( $VERSION ); |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
54
|
|
21
|
1
|
|
|
1
|
|
22
|
our $VERSION = 'v0.2.0'; |
22
|
|
|
|
|
|
|
}; |
23
|
|
|
|
|
|
|
|
24
|
1
|
|
|
1
|
|
6
|
use strict; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
27
|
|
25
|
1
|
|
|
1
|
|
5
|
use warnings; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
371
|
|
26
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
sub init |
28
|
|
|
|
|
|
|
{ |
29
|
0
|
|
|
0
|
1
|
|
my $self = shift( @_ ); |
30
|
0
|
|
|
|
|
|
$self->{_init_strict_use_sub} = 1; |
31
|
0
|
0
|
|
|
|
|
$self->SUPER::init( @_ ) || return( $self->pass_error ); |
32
|
0
|
|
|
|
|
|
return( $self ); |
33
|
|
|
|
|
|
|
} |
34
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
# Note: property |
36
|
0
|
|
|
0
|
1
|
|
sub badInput : lvalue { return( shift->_set_get_boolean( 'badinput', @_ ) ); } |
37
|
|
|
|
|
|
|
|
38
|
|
|
|
|
|
|
# Note: property |
39
|
0
|
|
|
0
|
1
|
|
sub customError : lvalue { return( shift->_set_get_boolean( 'customerror', @_ ) ); } |
40
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
# Note: property |
42
|
0
|
|
|
0
|
1
|
|
sub patternMismatch : lvalue { return( shift->_set_get_boolean( 'patternmismatch', @_ ) ); } |
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
# Note: property |
45
|
0
|
|
|
0
|
1
|
|
sub rangeOverflow : lvalue { return( shift->_set_get_boolean( 'rangeoverflow', @_ ) ); } |
46
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
# Note: property |
48
|
0
|
|
|
0
|
1
|
|
sub rangeUnderflow : lvalue { return( shift->_set_get_boolean( 'rangeunderflow', @_ ) ); } |
49
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
# Note: property |
51
|
0
|
|
|
0
|
1
|
|
sub stepMismatch : lvalue { return( shift->_set_get_boolean( 'stepmismatch', @_ ) ); } |
52
|
|
|
|
|
|
|
|
53
|
|
|
|
|
|
|
# Note: property |
54
|
0
|
|
|
0
|
1
|
|
sub tooLong : lvalue { return( shift->_set_get_boolean( 'toolong', @_ ) ); } |
55
|
|
|
|
|
|
|
|
56
|
|
|
|
|
|
|
# Note: property |
57
|
0
|
|
|
0
|
1
|
|
sub tooShort : lvalue { return( shift->_set_get_boolean( 'tooshort', @_ ) ); } |
58
|
|
|
|
|
|
|
|
59
|
|
|
|
|
|
|
# Note: property |
60
|
0
|
|
|
0
|
1
|
|
sub typeMismatch : lvalue { return( shift->_set_get_boolean( 'typemismatch', @_ ) ); } |
61
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
# Note: property |
63
|
0
|
|
|
0
|
1
|
|
sub valid : lvalue { return( shift->_set_get_boolean( 'valid', @_ ) ); } |
64
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
# Note: property |
66
|
0
|
|
|
0
|
1
|
|
sub valueMissing : lvalue { return( shift->_set_get_boolean( 'valuemissing', @_ ) ); } |
67
|
|
|
|
|
|
|
|
68
|
|
|
|
|
|
|
1; |
69
|
|
|
|
|
|
|
# NOTE: POD |
70
|
|
|
|
|
|
|
__END__ |
71
|
|
|
|
|
|
|
|
72
|
|
|
|
|
|
|
=encoding utf-8 |
73
|
|
|
|
|
|
|
|
74
|
|
|
|
|
|
|
=head1 NAME |
75
|
|
|
|
|
|
|
|
76
|
|
|
|
|
|
|
HTML::Object::DOM::ValidityState - HTML Object DOM Valid State Class |
77
|
|
|
|
|
|
|
|
78
|
|
|
|
|
|
|
=head1 SYNOPSIS |
79
|
|
|
|
|
|
|
|
80
|
|
|
|
|
|
|
use HTML::Object::DOM::ValidityState; |
81
|
|
|
|
|
|
|
my $validity = HTML::Object::DOM::ValidityState->new || |
82
|
|
|
|
|
|
|
die( HTML::Object::DOM::ValidityState->error, "\n" ); |
83
|
|
|
|
|
|
|
|
84
|
|
|
|
|
|
|
=head1 VERSION |
85
|
|
|
|
|
|
|
|
86
|
|
|
|
|
|
|
v0.2.0 |
87
|
|
|
|
|
|
|
|
88
|
|
|
|
|
|
|
=head1 DESCRIPTION |
89
|
|
|
|
|
|
|
|
90
|
|
|
|
|
|
|
The C<ValidityState> interface represents the validity states that an element can be in, with respect to constraint validation. Together, they help explain why an element's value fails to validate, if it is not valid. |
91
|
|
|
|
|
|
|
|
92
|
|
|
|
|
|
|
This is used only so that some properties work (like L<HTML::Object::DOM::Element::Button/validity>), but since this is for interactive interface, which perl does not provide, it has limited use. Anyhow, you can set those boolean values yourself. |
93
|
|
|
|
|
|
|
|
94
|
|
|
|
|
|
|
=head1 PROPERTIES |
95
|
|
|
|
|
|
|
|
96
|
|
|
|
|
|
|
For each of these boolean properties, a value of true indicates that the specified reason validation may have failed is true, with the exception of the valid property, which is true if the element's value obeys all constraints. |
97
|
|
|
|
|
|
|
|
98
|
|
|
|
|
|
|
=head2 badInput |
99
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
A boolean value that is true if the user has provided input that the browser is unable to convert. |
101
|
|
|
|
|
|
|
|
102
|
|
|
|
|
|
|
Example: |
103
|
|
|
|
|
|
|
|
104
|
|
|
|
|
|
|
<input type="number" id="age"> |
105
|
|
|
|
|
|
|
|
106
|
|
|
|
|
|
|
my $input = $doc->getElementById( 'age' ); |
107
|
|
|
|
|
|
|
if( $input->validity->badInput ) |
108
|
|
|
|
|
|
|
{ |
109
|
|
|
|
|
|
|
say( "Bad $input detected…" ); |
110
|
|
|
|
|
|
|
} |
111
|
|
|
|
|
|
|
else |
112
|
|
|
|
|
|
|
{ |
113
|
|
|
|
|
|
|
say( "Content of $input OK." ); |
114
|
|
|
|
|
|
|
} |
115
|
|
|
|
|
|
|
|
116
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/badInput> |
117
|
|
|
|
|
|
|
|
118
|
|
|
|
|
|
|
=head2 customError |
119
|
|
|
|
|
|
|
|
120
|
|
|
|
|
|
|
A boolean value indicating whether the element's custom validity message has been set to a non-empty string by calling the element's setCustomValidity() method. This C<setCustomValidity> method is implemented in L<HTML::Object::DOM::Element::Input>, L<HTML::Object::DOM::Element::Object> and L<HTML::Object::DOM::Element::Select> |
121
|
|
|
|
|
|
|
|
122
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/customError> |
123
|
|
|
|
|
|
|
|
124
|
|
|
|
|
|
|
=head2 patternMismatch |
125
|
|
|
|
|
|
|
|
126
|
|
|
|
|
|
|
A boolean value that is true if the value does not match the specified pattern, and false if it does match. If true, the element matches the C<:invalid> CSS pseudo-class. |
127
|
|
|
|
|
|
|
|
128
|
|
|
|
|
|
|
Example: |
129
|
|
|
|
|
|
|
|
130
|
|
|
|
|
|
|
<p> |
131
|
|
|
|
|
|
|
<label>Enter your phone number in the format (123)456-7890 |
132
|
|
|
|
|
|
|
(<input name="tel1" type="tel" pattern="[0-9]{3}" placeholder="###" aria-label="3-digit area code" size="2"/>)- |
133
|
|
|
|
|
|
|
<input name="tel2" type="tel" pattern="[0-9]{3}" placeholder="###" aria-label="3-digit prefix" size="2"/> - |
134
|
|
|
|
|
|
|
<input name="tel3" type="tel" pattern="[0-9]{4}" placeholder="####" aria-label="4-digit number" size="3"/> |
135
|
|
|
|
|
|
|
</label> |
136
|
|
|
|
|
|
|
</p> |
137
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
input:invalid { |
139
|
|
|
|
|
|
|
border: red solid 3px; |
140
|
|
|
|
|
|
|
} |
141
|
|
|
|
|
|
|
|
142
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/patternMismatch> |
143
|
|
|
|
|
|
|
|
144
|
|
|
|
|
|
|
=head2 rangeOverflow |
145
|
|
|
|
|
|
|
|
146
|
|
|
|
|
|
|
A boolean value that is true if the value is greater than the maximum specified by the max attribute, or false if it is less than or equal to the maximum. If true, the element matches the C<:invalid> and :out-of-range and CSS pseudo-classes. |
147
|
|
|
|
|
|
|
|
148
|
|
|
|
|
|
|
Example: |
149
|
|
|
|
|
|
|
|
150
|
|
|
|
|
|
|
<input type="number" min="20" max="40" step="2" /> |
151
|
|
|
|
|
|
|
|
152
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/rangeOverflow> |
153
|
|
|
|
|
|
|
|
154
|
|
|
|
|
|
|
=head2 rangeUnderflow |
155
|
|
|
|
|
|
|
|
156
|
|
|
|
|
|
|
A boolean value that is true if the value is less than the minimum specified by the min attribute, or false if it is greater than or equal to the minimum. If true, the element matches the C<:invalid> and :out-of-range CSS pseudo-classes. |
157
|
|
|
|
|
|
|
|
158
|
|
|
|
|
|
|
Example: |
159
|
|
|
|
|
|
|
|
160
|
|
|
|
|
|
|
<input type="number" min="20" max="40" step="2" /> |
161
|
|
|
|
|
|
|
|
162
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/rangeUnderflow> |
163
|
|
|
|
|
|
|
|
164
|
|
|
|
|
|
|
=head2 stepMismatch |
165
|
|
|
|
|
|
|
|
166
|
|
|
|
|
|
|
A boolean value that is true if the value does not fit the rules determined by the step attribute (that is, it is not evenly divisible by the step value), or false if it does fit the step rule. If true, the element matches the C<:invalid> and :out-of-range CSS pseudo-classes. |
167
|
|
|
|
|
|
|
|
168
|
|
|
|
|
|
|
Example: |
169
|
|
|
|
|
|
|
|
170
|
|
|
|
|
|
|
<input type="number" min="20" max="40" step="2" /> |
171
|
|
|
|
|
|
|
|
172
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/stepMismatch> |
173
|
|
|
|
|
|
|
|
174
|
|
|
|
|
|
|
=head2 tooLong |
175
|
|
|
|
|
|
|
|
176
|
|
|
|
|
|
|
A boolean value that is true if the value exceeds the specified maxlength for L<HTML::Object::DOM::Element::Input> or L<HTML::Object::DOM::Element::TextArea> objects, or false if its length is less than or equal to the maximum length. Note: This property is never true in Gecko, because elements' values are prevented from being longer than maxlength. If true, the element matches the C<:invalid> and C<:out-of-range> CSS pseudo-classes. |
177
|
|
|
|
|
|
|
|
178
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/tooLong> |
179
|
|
|
|
|
|
|
|
180
|
|
|
|
|
|
|
=head2 tooShort |
181
|
|
|
|
|
|
|
|
182
|
|
|
|
|
|
|
A boolean value that is true if the value fails to meet the specified minlength for L<HTML::Object::DOM::Element::Input> or L<HTML::Object::DOM::Element::TextArea> objects, or false if its length is greater than or equal to the minimum length. If true, the element matches the C<:invalid> and C<:out-of-range> CSS pseudo-classes. |
183
|
|
|
|
|
|
|
|
184
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/tooShort> |
185
|
|
|
|
|
|
|
|
186
|
|
|
|
|
|
|
=head2 typeMismatch |
187
|
|
|
|
|
|
|
|
188
|
|
|
|
|
|
|
A boolean value that is true if the value is not in the required syntax (when type is email or url), or false if the syntax is correct. If true, the element matches the C<:invalid> CSS pseudo-class. |
189
|
|
|
|
|
|
|
|
190
|
|
|
|
|
|
|
Example: |
191
|
|
|
|
|
|
|
|
192
|
|
|
|
|
|
|
<p> |
193
|
|
|
|
|
|
|
<label> |
194
|
|
|
|
|
|
|
Enter an email address: |
195
|
|
|
|
|
|
|
<input type="email" value="example.com" /> |
196
|
|
|
|
|
|
|
</label> |
197
|
|
|
|
|
|
|
</p> |
198
|
|
|
|
|
|
|
<p> |
199
|
|
|
|
|
|
|
<label> |
200
|
|
|
|
|
|
|
Enter a URL: |
201
|
|
|
|
|
|
|
<input type="url" value="example.com" /> |
202
|
|
|
|
|
|
|
</label> |
203
|
|
|
|
|
|
|
</p> |
204
|
|
|
|
|
|
|
|
205
|
|
|
|
|
|
|
input:invalid { |
206
|
|
|
|
|
|
|
border: red solid 3px; |
207
|
|
|
|
|
|
|
} |
208
|
|
|
|
|
|
|
|
209
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/typeMismatch> |
210
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
=head2 valid |
212
|
|
|
|
|
|
|
|
213
|
|
|
|
|
|
|
A boolean value that is true if the element meets all its validation constraints, and is therefore considered to be valid, or false if it fails any constraint. If true, the element matches the C<:valid> CSS pseudo-class; the :invalid CSS pseudo-class otherwise. |
214
|
|
|
|
|
|
|
|
215
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/valid> |
216
|
|
|
|
|
|
|
|
217
|
|
|
|
|
|
|
=head2 valueMissing |
218
|
|
|
|
|
|
|
|
219
|
|
|
|
|
|
|
A boolean value that is true if the element has a required attribute, but no value, or false otherwise. If true, the element matches the C<:invalid> CSS pseudo-class. |
220
|
|
|
|
|
|
|
|
221
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState/valueMissing> |
222
|
|
|
|
|
|
|
|
223
|
|
|
|
|
|
|
=head1 AUTHOR |
224
|
|
|
|
|
|
|
|
225
|
|
|
|
|
|
|
Jacques Deguest E<lt>F<jack@deguest.jp>E<gt> |
226
|
|
|
|
|
|
|
|
227
|
|
|
|
|
|
|
=head1 SEE ALSO |
228
|
|
|
|
|
|
|
|
229
|
|
|
|
|
|
|
See also L<Mozilla documentation|https://developer.mozilla.org/en-US/docs/Web/API/ValidityState> |
230
|
|
|
|
|
|
|
|
231
|
|
|
|
|
|
|
=head1 COPYRIGHT & LICENSE |
232
|
|
|
|
|
|
|
|
233
|
|
|
|
|
|
|
Copyright(c) 2021 DEGUEST Pte. Ltd. |
234
|
|
|
|
|
|
|
|
235
|
|
|
|
|
|
|
All rights reserved |
236
|
|
|
|
|
|
|
|
237
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. |
238
|
|
|
|
|
|
|
|
239
|
|
|
|
|
|
|
=cut |