Difference between input type hidden and style display none
1. <input type="hidden">
won't trigger input validation, auto completion, and other user interaction related events. It's designed to save raw data, without user's direct input.
Eg. a
<input type="hidden">
won't
auto complete it self, or preserve the inputted data before refreshing a
page, or prevent the form from being submitted for a failed type
validation can't even be seen.
2.
<input type="text" style="display:none">
is hidden element in the page, but you can give all validations in this.
3. But a
<input type="text" style="visibility: hidden;"/ >
is different from these two described above, it does take space in the DOM, whether the above will not take any.
It is visually hidden, are still going to be considered as a user interaction component. And on some devices enabled visual aid, it will serve as not hidden, and cannot provide the consistency you expected. That's why it's not preferred to do so.