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>
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|\s\w|\w\s|\s/
var msg="Du får endast ange tecken mellan A-Ö eller 0-9"}
else
{reg = /\D|\s\D|\D\s|\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.
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!
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]
264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e