@@ -113,7 +113,7 @@ class Pattern extends BasePattern {
113
113
}
114
114
115
115
// In any case, clear the custom validity first.
116
- this . set_error ( { input : input , msg : "" } ) ;
116
+ this . set_error ( { input : input , msg : "" , skip_event : true } ) ;
117
117
const validity_state = input . validity ;
118
118
119
119
if ( event ?. submitter ?. hasAttribute ( "formnovalidate" ) ) {
@@ -315,7 +315,12 @@ class Pattern extends BasePattern {
315
315
input_options . message . datetime
316
316
) {
317
317
this . set_error ( { input : input , msg : input_options . message . datetime } ) ;
318
+ } else {
319
+ // Still an error, but without customized messages.
320
+ // Call `emit_update` separately
321
+ this . emit_update ( "invalid" ) ;
318
322
}
323
+
319
324
}
320
325
321
326
if ( event ?. type === "submit" ) {
@@ -327,7 +332,7 @@ class Pattern extends BasePattern {
327
332
this . set_error_message ( input ) ;
328
333
}
329
334
330
- set_error ( { input, msg, attribute = null , min = null , max = null } ) {
335
+ set_error ( { input, msg, attribute = null , min = null , max = null , skip_event = false } ) {
331
336
// Replace some variables, as like validate.js
332
337
if ( attribute ) {
333
338
msg = msg . replace ( / % { attribute} / g, attribute ) ;
@@ -346,9 +351,12 @@ class Pattern extends BasePattern {
346
351
// (e.g. styled date input).
347
352
input [ KEY_ERROR_MSG ] = msg ;
348
353
354
+ if ( ! skip_event ) {
355
+ this . emit_update ( "invalid" ) ;
356
+ }
349
357
}
350
358
351
- remove_error ( input , all_of_group = false ) {
359
+ remove_error ( input , all_of_group = false , skip_event = false ) {
352
360
// Remove error message and related referencesfrom input.
353
361
354
362
let inputs = [ input ] ;
@@ -371,6 +379,10 @@ class Pattern extends BasePattern {
371
379
}
372
380
}
373
381
}
382
+
383
+ if ( ! skip_event ) {
384
+ this . emit_update ( "valid" ) ;
385
+ }
374
386
}
375
387
376
388
set_error_message ( input ) {
0 commit comments