Wow, a lot of answers here!
If the problem is <input type="hidden" required="true" />
, then you can solve this in just a few lines.
The logic is simple and straight-forward:
- Mark every required input on page-load with a
data-required
class.
- On submit, do two things: a) Add
required="true"
to all data-required inputs. b) Remove
required="true"` from all hidden inputs.
HTML
<input type="submit" id="submit-button">
Pure JavaScript
document.querySelector('input,textarea,select').filter('[required]').classList.add('data-required');
document.querySelector('#submit-button').addEventListener('click', function(event) {
document.querySelector('.data-required').prop('required', true);
document.querySelector('input,textarea,select').filter('[required]:hidden').prop('required', false);
return true;
}
jQuery
$('input,textarea,select').filter('[required]').addClass('data-required');
$('#submit-button').on('click', function(event) {
$('.data-required').prop('required', true);
$('input,textarea,select').filter('[required]:hidden').prop('required', false);
return true;
}