File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3395,8 +3395,10 @@ var htmx = (function() {
33953395 forEach ( disabledElts , function ( disabledElement ) {
33963396 const internalData = getInternalData ( disabledElement )
33973397 internalData . requestCount = ( internalData . requestCount || 0 ) + 1
3398- disabledElement . setAttribute ( 'disabled' , '' )
3399- disabledElement . setAttribute ( 'data-disabled-by-htmx' , '' )
3398+ if ( ! disabledElement . hasAttribute ( 'disabled' ) ) {
3399+ disabledElement . setAttribute ( 'disabled' , '' )
3400+ disabledElement . setAttribute ( 'data-disabled-by-htmx' , '' )
3401+ }
34003402 } )
34013403 return disabledElts
34023404 }
@@ -3418,7 +3420,7 @@ var htmx = (function() {
34183420 } )
34193421 forEach ( disabled , function ( disabledElement ) {
34203422 const internalData = getInternalData ( disabledElement )
3421- if ( internalData . requestCount === 0 ) {
3423+ if ( internalData . requestCount === 0 && disabledElement . hasAttribute ( 'data-disabled-by-htmx' ) ) {
34223424 disabledElement . removeAttribute ( 'disabled' )
34233425 disabledElement . removeAttribute ( 'data-disabled-by-htmx' )
34243426 }
Original file line number Diff line number Diff line change @@ -39,6 +39,18 @@ describe('hx-disabled-elt attribute', function() {
3939 fieldset . hasAttribute ( 'disabled' ) . should . equal ( false )
4040 } )
4141
42+ it ( 'preserve pre-disabled elements' , function ( ) {
43+ this . server . respondWith ( 'GET' , '/test' , 'ok' )
44+ const b1 = make ( '<button hx-get="/test" hx-disabled-elt="#b2">Click Me!</button>' )
45+ const b2 = make ( '<button id="b2" disabled></button>' )
46+ b2 . hasAttribute ( 'disabled' ) . should . equal ( true )
47+ b2 . hasAttribute ( 'data-disabled-by-htmx' ) . should . equal ( false )
48+ b1 . click ( )
49+ b2 . hasAttribute ( 'disabled' ) . should . equal ( true )
50+ this . server . respond ( )
51+ b2 . hasAttribute ( 'disabled' ) . should . equal ( true )
52+ } )
53+
4254 it ( 'multiple requests with same disabled elt are handled properly' , function ( ) {
4355 this . server . respondWith ( 'GET' , '/test' , 'Clicked!' )
4456 var b1 = make ( '<button hx-get="/test" hx-disabled-elt="#b3">Click Me!</button>' )
You can’t perform that action at this time.
0 commit comments