webForumDet fria alternativet

Vad är fel?

JavaScriptur Javascript

19 svar · 419 visningar · startad av skyman

Medlem sedan juli 20012 450 inlägg
Frågan#1
function checkform(obj){
                if(document.form.fornamn.value.length==""){
                        alert("Fyll i förnamn!");
                        document.form.fornamn.focus();
                        return false;
                }

                if(document.form.efternamn.value.length==""){
                        alert("Fyll i efternamn!");
                        document.form.efternamn.focus();
                        return false;
                }

                regexp="[\\\.@]";
                if(document.form.epost.value.length<3 || document.form.epost.value.search(regexp)==-1 ){
                        alert("Du har angett en felaktig epostadress.");
                        document.form.epost.focus();
                        return false;
                }

                regexp = "^[0-9]{5}$";
                if(document.form.postnummer.value.length<5 || document.form.postnummer.value.search(regexp)==-1){
                        alert("Du har angett ett felaktigt postnummer.\nSkriv det med 5 tecken utan mellanslag.");
                        document.form.postnummer.focus();
                        return false;
                }

                regexp = "^[A-Za-z0-9_]+$";
                if(document.form.username.value.search(regexp)==-1 || document.form.username.length==""){
                        alert("Du har anv&auml;nt ogiltiga tecken i ditt alias.\nAnv&auml;nd endast A-Za-z0-9_ .");
                        document.form.username.focus();
                        return false;
                }

                if(document.form.password.length<4){
                        alert("L&ouml;senordet m&aring;ste vara minst 4 tecken");
                        document.form.password.focus();
                        return false;
                }

                regexp="^[A-Za-z0-9]+$";
                if(document.form.password.value.search(regexp)==-1){
                        alert("Lösenordet får bara innehålla A-Za-z0-9.");
                        document.form.password.focus();
                        return false;
                }

                if(document.form.password.value!=document.form.password2.value){
                        alert("L&ouml;senorden st&auml;mmer inte &ouml;verens med varandra.");
                        document.form.password.focus();
                        return false;
                }

                return true;
        }
Medlem sedan nov. 20017 144 inlägg
#2

Det är en fördel om du kan beskriva felet. Det blir ju en aning lättare då. :)

Medlem sedan juli 20012 450 inlägg
#3

Åh...
Jag lämnar password och username tomt, det verkar som om inte regular expressions fungerar tillfresställande...
Får inget felmeddelande...

Medlem sedan dec. 20025 483 inlägg
#4

Du tilldelar inte variablen regexp något reguljärt uttryck utan en sträng. RegExp-variabler kan du bl.a. skapa så här:

var regexp = [b]/[/b][i]regexp-kod[/i][b]/[/b];

:)

Medlem sedan juli 20012 450 inlägg
#5

Och hur kommer det se ut då? Det är inte jag som har gjort det, jag ska bara förbättra och det verkar inte ens ha fungerat innan...

regexp=/[\\\.@]/;

regexp = /^[0-9]{5}$/;

regexp = /^[A-Za-z0-9_]+$/;

Medlem sedan dec. 20025 483 inlägg
#6

De variabeldeklarationerna ser bättre ut ;)

Sedan kan du använda t.ex. funktionen test() för att avgöra om värdet på ett fält är korrekt eller inte:

var regexp = /[i]kod[/i]/;

...
// Om värdet inte matchar det reguljära uttrycket, returnerar funktionen [i]false[/i]
if(! regexp.test(document.forms["foo"].elements["bar"].value))
     // Gör något
...

:)

Medlem sedan juli 20012 450 inlägg
#7

Och funktionen test finns under regexp?
Ett av mina exempel:

var regexp=/[\\\.@]/;
                if(document.form.epost.value.length<3 || !regexp.test(document.form.epost.value)){
                        alert("Du har angett en felaktig epostadress.");
                        document.form.epost.focus();
                        return false;
                }
Medlem sedan dec. 20025 483 inlägg
#8

Ja, test() är en RegExp-metod.

Exempel:

...
function ex(o){
	var regexp = /^([\w])+@(([\w])+([\.]{1})([\w])+)+$/;

	if(o.elements["epost"].value.length<3 || ! regexp.test(o.elements["epost"].value)){
		alert("Du har angett en felaktig epostadress.");
		document.form.epost.focus();
		return false;
	}
};
...
<form name="form" onsubmit="return ex(this)">

<input type="text" name="epost">
<input type="submit">

</form>

:)

Medlem sedan juli 20012 450 inlägg
#9

1. Hur ser det ut om man ska kolla postnummer?
5 siffror utan mellanslag.

2. Hur ser det ut om man ska ange användarnamn?
A-Z, a-z, 0-9 _ får vara med...

Medlem sedan dec. 20025 483 inlägg
#10

Exempel:

1:

<head>

<script>

function checkForm(o){
	if(o.elements["pnr"].value.length != 5 || isNaN(o.elements["pnr"].value)){
		alert("...");
		return false;
	}
};

</script>

</head>

<form onsubmit="return checkForm(this)">
<input type="text" name="pnr" maxlength="5">
<input type="submit">
</form>

2:

<head>

<script>

function checkForm(o){
	var regexp = /^[\w]+$/;

	if(! regexp.test(o.elements["user"].value)){
		alert("...");
		return false;
	}
};

</script>

</head>

<form onsubmit="return checkForm(this)">
<input type="text" name="user">
<input type="submit">
</form>

:)

Medlem sedan juli 20012 450 inlägg
#11
function ex(o){
	var regexp = /^([\w])+@(([\w])+([\.]{1})([\w])+)+$/;

	if(o.elements["epost"].value.length<3 || ! regexp.test(o.elements["epost"].value)){
		alert("Du har angett en felaktig epostadress.");
		document.form.epost.focus();
		return false;
	}
};

Denna funkar inte om personen har en emailadress med en punkt i, tex kalle**.**svensson@telia.se...

Medlem sedan dec. 20025 483 inlägg
#12

Testa denna:

function ex(o){
	var regexp = /^(([\w])+([\.]){1})*([\w])+@([\w])+(([\.]{1})([A-Za-z]){2,4})+$/;

	if(o.elements["epost"].value.length<3 || ! regexp.test(o.elements["epost"].value)){
		alert("Du har angett en felaktig epostadress.");
		document.form.epost.focus();
		return false;
	}
};

:)

Medlem sedan juli 20012 450 inlägg
#13

Kanon!
Det funkade.
Tcka så jättemycket :)

Medlem sedan sep. 2002188 inlägg
#14

Peter, du är ruskigt bra på html/javascript :p

Medlem sedan juli 20012 450 inlägg
#15

En fråga till:
Jag ska kolla så att datum är i formen 2003-03-14 och att tiden är i formen 11:50...
Förmodar att det skulle vara något liknande:

var regexp = /^((([\w]){4})+([\-]){1})*(([\w]){2})+([\-]){1})*(([\w]){2})))+$/;
var regexp = /^((([\w]){2})+([\:]){1})*(([\w]){2})))+$/;

Men hur skriver man om det bara ska vara siffror, antar att [/w] betyder bokstav...

Medlem sedan dec. 20025 483 inlägg
#16
[0-9]
// eller...
\d

:)

Medlem sedan juli 20012 450 inlägg
#17

Kanon!
Tack!

Medlem sedan okt. 20023 030 inlägg
#18

En fråga jag med, finns det någon replacefunktion för reguljära uttryck i javascript?

Medlem sedan sep. 20021 655 inlägg
#19

Jadå, och föga förvånande heter metoden replace().

Ett litet exempel:

<script type="text/javascript">
str = "En hårig katt.";
regexp = /(hårig)/;
str = str.replace(regexp, "luden");

document.write(str);
</script>
Medlem sedan okt. 20023 030 inlägg
#20

Man tackar! :bire

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