webForumDet fria alternativet

Validera telnr?

6 svar · 328 visningar · startad av Yoda

YodaMedlem sedan nov. 2002291 inlägg
#1

Jag ska validera ifall ett fält innehåller ett telnr. Fältet måste vara ifyllt och det måste vara ett telnr, alltså tillåts bara siffror och - och /.

Så här långt har jag kommit, fast då tillåts ju inte tecknen - och /. Hur gör jag för att tillåta dessa också?

function confirmTelnr()
{
var tel=new String(document.interest.tel.value);
	
if(document.interest.tel.value=="")
{
alert("Var vänlig fyll i ditt telefonnummer.");
return false;
}
else if(isNaN(document.interest.tel.value))
{
alert("Fältet innehåller inte ett telefonnummer.");
return false;
}
return true;
}
ejickMedlem sedan mars 2001895 inlägg
#2

Ett tips är att bara skriva in telefonnummret med siffror och inte använda verken mellanslag, /, eller - eftersom folk har en vana att skriva sina nummer på olika sätt enligt: http://www.webforum.nu/showthread.php?s=&postid=578172

dectgapMedlem sedan sep. 20021 655 inlägg
#3

För att kontrollera strängar är reguljära uttryck ypperligga att använda.

Ett exempel på hur det kan se ut:

String.prototype.isValidPhoneNumber = function(){
   return /^0\d{1,3}[-\/ ]?\d{5,7}$/.test(this);
}

var p = "012-3456789";
alert(p.isValidPhoneNumber());

Telefonnumret ska ha ett riktnummer som är 1-3 tecken långt, och som börjar på en nolla. Sedan ett skiljetecken (-, / eller blanksteg) om man vill, följt av själva numret på 5 till 7 siffror.

Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Stackars männsikor ifrån Hallstahammar (0220), Gnesta (0158) och Trosa (0156) m.fl.
Riktnumret skall nog vara 2-4 enligt min mening. ;)
I Stockholmsområdet finns det även åttasiffriga telefonnummer. t.ex. mitt eget. :)

return /^0\d{2,4}[-\/ ]?\d{5,8}$/.test(this);
YodaMedlem sedan nov. 2002291 inlägg
#5

Aha, tack men hur får jag in koden i min lilla funktion? Och vad betyder allting i den? Jag är ingen hejare på js så jag är tacksam om ni vill förklara lite så jag får lära mig. =)

dectgapMedlem sedan sep. 20021 655 inlägg
#6

Jesper T skrev:

Stackars männsikor ifrån Hallstahammar (0220), Gnesta (0158) och Trosa (0156) m.fl.
Riktnumret skall nog vara 2-4 enligt min mening. ;)
I Stockholmsområdet finns det även åttasiffriga telefonnummer. t.ex. mitt eget. :)

Fyrsiffriga riktnummer tilläts - det var bara jag som hade skrivit fel i den förklarande texten. Den första nollan var ju statisk.
Åttasiffriga telefonnummer var däremot något nytt för mig.

Yoda skrev:

Aha, tack men hur får jag in koden i min lilla funktion? Och vad betyder allting i den? Jag är ingen hejare på js så jag är tacksam om ni vill förklara lite så jag får lära mig. =)

Lägg in

String.prototype.isValidPhoneNumber = function(){
   return /^0\d{1,3}[-\/ ]?\d{5,8}$/.test(this);
}

någonstans i din JavaScript-kod, så länge det är ovanför där du tänker göra telefonnummerkontrollen.

När du ska göra kontrollen använder du den nya isValidPhoneNumber()-metoden på strängen som innehåller telefonnumret.
T ex

if(!document.forms["theForm"].phoneNumber.value.isValidPhoneNumber())
   alert("Felaktigt telefonnummer!");
else
   // gör någonting annat.
stoffe-2kMedlem sedan apr. 200010 782 inlägg
#7

Varför lägga ner så mycket jobb på en funktion som ändå folk kommer att skriva 0123-12345678 samt kommer att bli iriterade på när de hoppar överatt fylla i?

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
127 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)