Hi Chris,
I am not sure if this is what you're seeing, but one problem with this approach is that the button will only change state (enabled to disabled / disabled to enabled) when users leave a field. So, say "year" field is required. At first, the button will be disabled. Users enter a value in the year field, an try to click on the button: this won't work as until the focus goes to another XForms field, the button won't become enabled. So if you really need to have the button disabled when the data isn't valid, I recommend you add incremental="true" on the year's <xf:input>, and on any other input on your form that might be invalid.
If despite that it doesn't work for you, could you create a minimal example that reproduces the issue, and provide steps to reproduce the issue with that example, so we can run it here?
Alex
--
Follow Orbeon on Twitter: @orbeon
Follow me on Twitter: @avernet