I have an input type date on my form that I limited to only use today's date by setting the min and max attribute to today with the help of javascript. The problem is the user can still type a different date instead of picking it using the little calendar popup. Is there a way to not allow this?
According to specification min and max shall only affect form submission if violated. GUI behavior is not standardized and therefore does depend on the browser vendor and its specific version. For example, on Chrome 97 I'm not allowed to type the year 2019 in this demo page. As you can see the year text is gray and I'm not allowed to alter it:
You should use a non-native element, to achieve consistent behavior. See for example JQuery DatePicker