The EZ Time JS widget can do this for you. It takes the bare minimum input and properly formats and validates it. It automatically corrects/removes invalid characters. It is 100% keyboard based and is aimed at high productivity for trained users. It avoids the pitfalls of Javascript 'Time Pickers' that require tedious and slow clicking, dragging, and mouse movements which hamper productivity.
In reference to the above comment, EZ Time JS was developed specifically for serious, heavy loads of data entry and is perfect for scheduling work.
It not only validates but it also automatically removes and/or corrects invalid input. It accepts shortcuts that make entering time very quick.
Here are some examples:
INPUT --> OUTPUT
8 --> 08:00 AM
515p --> 05:15 PM
12f --> 12:15 AM --notice the use of shortcut codes, ie., f = 15
Since you mentioned colons, with EZ Time you can leave out spaces and the colon for convenience. It adds them back for you in the output.
EZ Time JS makes entering time extremely easy.