HTML5 ist mit all den verschiedenen type-Attributen für das Input-Element auf einem guten Weg. So toll es aber auch ist, Client-Validierung für Email/Telefon/URL-Eingaben zu haben, so ärgerlich ist es, wenn dies eher zur Hürde wird. Beim s9y-Alphatest passierte dies - die URL werde als nicht valid angemeckert, obwohl sie richtig sei, war eine berechtigte Beschwerde. Das lag am fehlenden http://. Wenn man aus Chrome und FF eine URL kopiert, wird das zwar vorgestellt. Aber angezeigt wird es nicht mehr. In den Köpfen einiger Nutzer - und auch ich selbst bin darüber schon gestolpert - ist dieses http:// nicht mehr präsent. Was ja auch richtig ist, muss man es doch zurecht nirgends mehr eingeben, ist es doch immer impliziert. Außer beim URL-Input-Element von HTML5.
Leider gibt es dafür wohl auch keine integrierte Lösung. Es muss wieder Javascript herhalten, um das http:// voranzustellen, wenn es vom Nutzer vergessen wurde. Dafür eignet sich das change-Event:
if (document.getElementById('urlInput') != null) {
var urlInput = document.getElementById('urlInput');
urlInput.addEventListener('change', function() {
if (urlInput.value != "" && ! (urlInput.value.substr(0,7) == "http://" || urlInput.value.substr(0,8) == "https://")) {
urlInput.value = "http://" + urlInput.value;
}
});
}