il problema è nel caso in cui salto la compilazione del secondo e simulo l'errore sul terzo..
es: se select 1 e campo 1 sono compilati e select 3 non vuoto e campo 3 vuoto..
penso che il problema sia su questo controllo

form.diglk3.value != "http://"

nel caso il campo non è valorizzato ed è quindi "", è cmq diverso da "http://", quindi per risolvere dovrebbe bastare modificare la condizione da cosi:

form.diglk3.value != "" || form.diglk3.value != "http://"

a cosi:

form.diglk3.value != "" && form.diglk3.value != "http://"