I D created TAP5-2481:
-------------------------

             Summary: FormFragment can't be used in conjunction with HTML5 
support
                 Key: TAP5-2481
                 URL: https://issues.apache.org/jira/browse/TAP5-2481
             Project: Tapestry 5
          Issue Type: Bug
          Components: tapestry-core
    Affects Versions: 5.4
            Reporter: I D


Steps to reproduce:

# Use Chrome
# Set SymbolConstants.ENABLE_HTML5_SUPPORT to true
# Have a page with a form containing a FormFragment containing a field with the 
"required" validator
# Hide the FormFragment
# Attempt to submit the form
# Note that nothing happens and the following JS error appears in the Chrome 
dev tools console: "An invalid form control with name='whatever' is not 
focusable."

This is due to the fact that when SymbolConstants.ENABLE_HTML5_SUPPORT is set 
to true, the "required" validator adds a "required" attribute to the form 
field, which in turn makes the browser want to validate it.

At first I thought this could be fixed simply by a slight modification: 
whenever a form fragment handles the prepareForSubmit event and sets the 
fragment's hidden element's "disabled" attribute, it should also set the 
"disabled" attributes of all inputs, selects, textareas etc contained therein 
to the same value. This will disable native browser validation for these fields.

However, I then realized that the prepareForSubmit event isn't even triggered 
by the browser in this case.

This means that we shouldn't even rely on the prepareForSubmit event here, and 
instead set the disabled attribute (in the generated hidden field as well as 
the actual ones) whenever the "events.formfragment.changeVisibility" is 
triggered.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to