Avatar billede htx98i17 Professor
01. august 2012 - 14:28 Der er 9 kommentarer og
1 løsning

en funktion

Jeg har et textarea med indholdsmønster:

produktnummer,tæller,(u)synlig

Der kan være mange linjer/produkter. Alle værdier er adskilt med komma og der findes ikke kommaer i værdierne.

<textarea>
G1010A,100,1
G1010B,100
G1010C,,1
G1010D
Avatar billede htx98i17 Professor
01. august 2012 - 14:30 #1
eksperten cuttede halvdelen af mit spm efter at jeg havde previewed det. Jeg skriver det igen.
Avatar billede htx98i17 Professor
01. august 2012 - 14:32 #2
Jeg har et textarea med indholdsmønster:

produktnummer,tæller,(u)synlig

Der kan være mange linjer/produkter. Alle værdier er adskilt med komma og der findes ikke kommaer i værdierne.

<textarea>
G1010A,100,1
G1010B,100
G1010C,,1
G1010D
</textarea>

Jeg ved det er noget med reg exp og finde ud af linjeskift og udskifte sidste værdi.

Men det bliver for avanceret for mig, bl.a. fordi der på hver linje kan være mellem 1 og 3 af værdierne. Ekselpelvis skal 'G1010D' laves om til 'G1010D,,1'

Dette er slut af spm
Avatar billede htx98i17 Professor
01. august 2012 - 14:40 #3
Så glemte jeg alligevel det vigtigste:

Jeg har brug for en javascript funktion som ændrer tredje værdi/(u)synlig til værdien '0' på hver linje.

Ekselpelvis skal 'G1010D' laves om til 'G1010D,,0'
Avatar billede olsensweb.dk Ekspert
01. august 2012 - 16:06 #4
prøv dette, jeg anvender dog ikke regulære udtryk

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
    function Reset3Char(str){
        var ar=Array(3);
        ar=str.split(",");       
        if(typeof ar[1] =="undefined") ar[1]="";       
        var lng=3;
        var out="";
        ar[2]=0; // setter sidste tal til 0
        for(j=0;j<lng;j++){
            out +=ar[j]+",";
        }
        out = out.slice(0, -1);    // sleter sidste komma
        return out;       
    }
    </script>
</head>
<body>
<form name="testform">
<textarea id="inputtext">
G1010A,100,1
G1010B,100
G1010C,,1
G1010D
</textarea>
<textarea id="outputtext" name="outputtext">
</textarea>
</form>
<script type="text/javascript">
var txtarea = document.getElementById('inputtext');
var stringarray = txtarea.value.split('\n');
var lng=stringarray.length-1;
for(k=0;k<lng;k++){   
    document.testform.outputtext.value += Reset3Char(stringarray[k])+"\n";
}
</script>
</body>
</html>


demo http://experten.olsensweb.dk/966758/
Avatar billede olebole Juniormester
01. august 2012 - 16:26 #5
<ole>

Kunne du ikke gå ét skridt tilbage og skabe en mere hensigtsmæssig struktur på indholdet af textarea'et?

/mvh
</bole>
Avatar billede htx98i17 Professor
01. august 2012 - 18:10 #6
ole: nej, men tak for inputtet

ronols: Det virker perfekt. Har passet den til ét textarea og lavet den sidste del til en funktion der kører når man afkrydser en checkbox.

Jeg har dog en lille rettelse kommer jeg til at se. Hvis der ikke er new line efter sidste linje, så bliver den sidste linje ikke medtaget. Kan det laves om? :)

Du må ligge et svar.
Avatar billede olsensweb.dk Ekspert
01. august 2012 - 18:45 #7
Hvis der ikke er new line efter sidste linje, så bliver den sidste linje ikke medtaget. Kan det laves om? :)
prøv at indsætte en if sætning der tester på sidste element, og er det blank tælles længden 1 ned

<script type="text/javascript">
var txtarea = document.getElementById('inputtext');
var stringarray = txtarea.value.split('\n');
var lng=stringarray.length;
if(stringarray[lng-1]=="")lng--;
for(k=0;k<lng;k++){   
    document.testform.outputtext.value += Reset3Char(stringarray[k])+"\n";
}
</script>
Avatar billede htx98i17 Professor
01. august 2012 - 18:50 #8
Det fungerer som det skal nu. Perfekt. Tusind tak.
Ser du iøvrigt nogle kampatibilitetsproblemer her ift. browsere?
Avatar billede olsensweb.dk Ekspert
01. august 2012 - 19:00 #9
Ser du iøvrigt nogle kampatibilitetsproblemer her ift. browsere?
der er muligvis noget med opera ej tested jf http://stackoverflow.com/questions/6369283/javascript-textarea-lines-count
Avatar billede htx98i17 Professor
01. august 2012 - 20:02 #10
Takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester