I just tested this in Chrome and it seems to work just fine
navigator.geolocation.getCurrentPosition() can take some time to execute, which is why it has the callback function. The first time the getCurrentPosition() method is called, it took around 670ms on my PC, and I had already allowed geolocation access to the browser, when I cleared my exception list, I had to click "allow" again - so the call took almost 3 seconds. (Of course subsequent calls were faster, at around 80 - 130ms.)
(Also, I changed the fields to type="text" to easily see if they were receiving the values.)
It's worth noting that even if geolocation is available as a feature in the browser, that doesn't mean that you will have access to the coordinates (for example if someone denies access to expose their location to you). When someone is asked whether they want to Allow or Deny access, and they choose Deny, the position callback for getCurrentPosition will not fire.
Thankfully, you will be able to find out if that is the case. The getCurrentPosition method will also take an error handler which will expose a PositionError object that contains a code and a message.
For example, you can try pasting this in to your Chrome/Firefox debug console:
If you try this on a site where you haven't already allowed location tracking (and your settings are set to always ask you), then if you Deny access you should see the error callback executed with a message along the lines of "User denied GeoLocation".
Further reading: http://diveintohtml5.info/geolocation.html