webForumDet fria alternativet

Optimera kod

6 svar · 244 visningar · startad av Brimba

BrimbaMedlem sedan dec. 19992 966 inlägg
#1

Nedan ser ni lite kod.

Jag undrar hur ni hade valt att optimera denna kod?
Som sagt vill jag kolla två olika fält, det ena får endast innehålla a-ö det andra får innehålla a-ö samt 0-9.
Måste man verkligen ha två funktioner för detta, eller har ni några tips om hur jag löser det på ett bättre sätt?

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
function validate(field) {
var valid = "abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ"
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++) {
temp = "" + field.value.substring(i, i+1);
if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") {
alert("Ogiltligt tecken! endast a-ö samt A-Ö får förekomma i fältet.");
field.focus();
field.select();
   }
}

function validatenum(field) {
var valid = "abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ0123456789"
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++) {
temp = "" + field.value.substring(i, i+1);
if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") {
alert("Ogiltligt tecken! endast a-ö, A-Ö samt 0-9 får förekomma i fältet.");
field.focus();
field.select();
   }
}
</font>

Tack!

------------------
Mvh
Patrik
aka Brimba

fredrikMedlem sedan dec. 19991 082 inlägg
#2

Tjena, här kommer ett tips där du skickar med ett värde in i funktionen för att kolla om det ska vara bara bokstäver eller både bokstäver och siffror.
Funtionen använder sig av reguljära uttryck:

function validate(val,typ)
{
if (typ==0)
	{reg = /\w&#0124;\s\w&#0124;\w\s&#0124;\s/
	var msg="Du får endast ange tecken mellan A-Ö eller 0-9"}
else
	{reg = /\D&#0124;\s\D&#0124;\D\s&#0124;\s/
	var msg="Du får endast ange tecken mellan A-Ö"}
	
var reg_exp = new RegExp(reg)
var len=val.length;
var fel=false;

for (i=0;i<len;i++)
	{
	val_char=val.substring(i,i+1)
	ch_reg = reg_exp.test(val_char)
	if (ch_reg==false)
		{fel=true}	
	}
if (fel==true)
	{alert(msg)}
}

Du anropar funktionen genom att skicka in önskat värde, samt en nolla eller etta för vilken typ du ska använda.

onclick="validate(document.form.input.value,1)

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
http://server.webwerkstaden.se/fredde/

spangoMedlem sedan juni 20006 147 inlägg
#3
function validate(field) {
if (new RegExp("[a-z" + unescape("%E5%E4%F6") + "]+", "i").exec(field.value) != field.value) {
alert("Ogiltligt tecken! endast a-ö samt A-Ö får förekomma i fältet.");
field.focus();
field.select();
}
}
function validatenum(field) {
if(new RegExp("[a-z" + unescape("%E5%E4%F6") + "0-9]+", "i").exec(field.value) != field.value) {
alert("Ogiltligt tecken! endast a-ö, A-Ö samt 0-9 får förekomma i fältet.");
field.focus();
field.select();
}
}

r måste ha vart rejält trött när jag skrev den gamla koden...

------------------
-- spango
Internet ska vara kod, inte kul!

[Redigerat av spango den 11 okt 2000]

BrimbaMedlem sedan dec. 19992 966 inlägg
#4

Men du sätter allt till lowercase?

------------------
Mvh
Patrik aka Brimba
Brimbas lille ställe

spangoMedlem sedan juni 20006 147 inlägg
#5

Brimba, jag har omoptimerat koden nu.

------------------
-- spango
Internet ska vara kod, inte kul!

BrimbaMedlem sedan dec. 19992 966 inlägg
#6

Jag tycker inte att din kod gör att jag får mindre antal funktioner?

Jag behåller nog det jag skrev från början.

Tack!

------------------
Mvh
Patrik aka Brimba
Brimbas lille ställe

spangoMedlem sedan juni 20006 147 inlägg
#7

Jaså, det var färre funktioner du var ute efter...

function validate(field,description , extras) {
if(!extras) extras = "";
if(new RegExp("[a-z" + unescape("%E5%E4%F6") + extras + "]+", "i").exec(field.value) != field.value) {
alert("Ogiltligt tecken! Endast " + description + " får förekomma i fältet.");
field.focus();
field.select();
}
}
validate(ettFelt, "a-ö och A-Ö"); // visar "Ogiltligt tecken! Endast a-ö och A-Ö får förekomma i fältet." om nåt annat än a-ö förekommer i fältet
validate(ettFelt, "a-ö, A-Ö samt 0-9", "0-9"); // visar "Ogiltligt tecken! Endast a-ö, A-Ö samt 0-9 får förekomma i fältet." om nåt annat än a-ö eller 0-9 dyker upp i fältet

\r Unterminated string literal

------------------
-- spango
Internet ska vara kod, inte kul!

[Redigerat av spango den 13 okt 2000]

128 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
126 ms — hämta tråd, inlägg och bilagor (db)