@@ -10,16 +10,14 @@ export default class extends Controller {
1010
1111 connect ( ) {
1212 this . autoTargets . forEach ( ( element ) => {
13- const event =
14- element . dataset . autosubmitTriggerEvent || this . triggerEventValue ;
13+ const event = this . #getTriggerEvent( element ) ;
1514 element . addEventListener ( event , this . handleInput ) ;
1615 } ) ;
1716 }
1817
1918 disconnect ( ) {
2019 this . autoTargets . forEach ( ( element ) => {
21- const event =
22- element . dataset . autosubmitTriggerEvent || this . triggerEventValue ;
20+ const event = this . #getTriggerEvent( element ) ;
2321 element . removeEventListener ( event , this . handleInput ) ;
2422 } ) ;
2523 }
@@ -33,6 +31,50 @@ export default class extends Controller {
3331 } , this . #debounceTimeout( target ) ) ;
3432 } ;
3533
34+ #getTriggerEvent( element ) {
35+ // Check if element has explicit trigger event set
36+ if ( element . dataset . autosubmitTriggerEvent ) {
37+ return element . dataset . autosubmitTriggerEvent ;
38+ }
39+
40+ // Check if form has explicit trigger event set
41+ if ( this . triggerEventValue !== "input" ) {
42+ return this . triggerEventValue ;
43+ }
44+
45+ // Otherwise, choose trigger event based on element type
46+ const type = element . type || element . tagName ;
47+
48+ switch ( type . toLowerCase ( ) ) {
49+ case "text" :
50+ case "email" :
51+ case "password" :
52+ case "search" :
53+ case "tel" :
54+ case "url" :
55+ case "textarea" :
56+ return "blur" ;
57+ case "number" :
58+ case "date" :
59+ case "datetime-local" :
60+ case "month" :
61+ case "time" :
62+ case "week" :
63+ case "color" :
64+ return "change" ;
65+ case "checkbox" :
66+ case "radio" :
67+ case "select" :
68+ case "select-one" :
69+ case "select-multiple" :
70+ return "change" ;
71+ case "range" :
72+ return "input" ;
73+ default :
74+ return "blur" ;
75+ }
76+ }
77+
3678 #debounceTimeout( element ) {
3779 if ( element . dataset . autosubmitDebounceTimeout ) {
3880 return Number . parseInt ( element . dataset . autosubmitDebounceTimeout ) ;
0 commit comments