webForumDet fria alternativet

Kolla array vid submit.

6 svar · 314 visningar · startad av icaaq

icaaqMedlem sedan okt. 20004 910 inlägg
#1

Hej.
Jag skulle vilja köra en funktion onsubmit som kollar om värdet i en textbox finns i en array.

Men hur skulle den kollen av värdena se ut?

mv icaaq

dectgapMedlem sedan sep. 20021 542 inlägg
#2

Ett sätt:

<script type="text/javascript">
var allowedTexts = ["hejsan",
                    "kalle",
                    "nisse",
                    "olle"];

function inArray(a,b){
    for(var i=0; i<b.length; i++)
        if(b[i]==a)
            return true;
    return false;
}
</script>

...

<form onsubmit="return inArray(this.theText.value, allowedTexts)">
    <input type="text" name="theText" />
    <input type="submit" />
</form>

För att göra en "case insensitive" kontroll, d.v.s. att det kvittar om man skriver med versaler eller gemener kan du skriva:

function inArray(a,b){
    for(var i=0; i<b.length; i++)
        if(b[i]==a.toLowerCase())
            return true;
    return false;
}
icaaqMedlem sedan okt. 20004 910 inlägg
#3

Tack det verkar funka....men nu är det så att det som ska kollas är en type='file' och jag vill alltså kolla om endast filnamnet finns i arrayen. hur skulle det se ut....?

dectgapMedlem sedan sep. 20021 542 inlägg
#4
<script type="text/javascript">
var allowedFiles = ["img.png",
                    "img.jpeg",
                    "img.jpg",
                    "img.gif"];

function checkFile(filePath){
    filePath.match(/([^\/\\]+)$/);
    return inArray(RegExp.$1, allowedFiles);
}

function inArray(a,b){
    for(var i=0; i<b.length; i++)
        if(b[i]==a.toLowerCase())
            return true;
    return false;
}
</script>

...

<form onsubmit="return checkFile(this.theFile.value)">
    <input type="file" name="theFile" />
    <input type="submit" />
</form>
icaaqMedlem sedan okt. 20004 910 inlägg
#5

Jag vet inte om jag utrycker mig knasigt men jag ska försöka igen.
Jag laddar upp en array på filer som finns i en mapp på servern (detta är redan klart).

Nu vill jag kolla om användaren laddar upp en fil med lika namn och filändelse.

Jag bytte plats på false/true i inarray funktionen men utan någon större lycka.
Hoppas att det blev lite klarare :)

mv icaaq

dectgapMedlem sedan sep. 20021 542 inlägg
#6

Om du inte vill att man ska kunna ladda upp en fil med samma namn som en fil som redan finns kan du ändra till

function checkFile(filePath){
    filePath.match(/([^\/\\]+)$/);
    return !inArray(RegExp.$1, allowedFiles);
}
icaaqMedlem sedan okt. 20004 910 inlägg
#7

Tack....

Genererad på 363 ms · cache AV · v20260730165559-full.f96bc7eb