A User input should only be outright rejected if it's internally invalid, referred to as inviable. This is intended to avoid the User needing to Walk Valid State [[20200411095418]].

If a user is intended to enter a phone number of ten digits, but unnecessarily start with the digit 1, they'll attempt to enter eleven digits—1, plus the expected phone number. When this happens, if the input blocks the eleventh digit, the User will be forced to navigate to the start of their input, delete the 1, then navigate back to the end of their input to reinsert a digit they've already typed but which was rejected. This is a much slower process than allowing for extra digits while displaying an error. This rule states that extra digits should be allowed, as they are not internally invalid, as in, they could be made valid if other, outside edits are made. Characters that are inviable, like word characters, could be blocked without creating a Walking the Valid State problem.

Note: A better solution would be to allow for the 1. Inputs should be as permissive as possible without allowing for ambiguity of intent[[TODO]].

This problem applies to inputs from individual characters to full form submission. Though a phone number input might allow for extra digits, the form it's in might still reject submission if the phone number as a whole is not considered viable. As in, there is nowhere outside this form where an edit could be made to render the number provided as valid.

#software #ux