Avatar billede heyn Nybegynder
12. januar 2006 - 14:29 Der er 12 kommentarer og
1 løsning

At fjerne mellemrum, enter og return.

Jeg skal lave en funktion der fjerner mellemrum-, enter- og return-indtastninger i starten af mit script, for at sikre at et textarea er udfyldt.
For at fjerne mellemrum gør jeg p.t. således:

function test_af_submit(id){
    str = document.getElementById(id).value;
    str = str.replace(/^ +/,"");
    str = str.replace(/ +$/,"");
    if (str == ''){ window.alert('Du mangler at udfylde tekstfeltet'); return false; }
    return true;
}

jeg forestiller mig en omskrivning noget i stil med:

function test_af_submit(id){
    str = document.getElementById(id).value;
    do{
    len = str.length;
    str = str.replace(/^ +/,"");
    str = str.replace(/ +$/,"");
    str = str.replace(/^[RETURN_TEGN]+/,"");
    str = str.replace(/[RETURN_TEGN]+$/,"");
    str = str.replace(/^[ENTER_TEGN]+/,"");
    str = str.replace(/[ENTER_TEGN]+$/,"");
    new_len = str.length;
    }
    while (len != new_len)
    if (str == ''){ window.alert('Du mangler at udfylde tekstfeltet'); return false; }
    return true;
}

Problemet er bare: Hvordan skriver man: [RETURN_TEGN] og[ENTER_TEGN]?

Mvh Christian
Avatar billede fixxxer Nybegynder
12. januar 2006 - 14:35 #1
Er det ikke bare mange gange nemmere at trimme feltet og se om det er tomt?


function LTrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);

    if (whitespace.indexOf(s.charAt(0)) != -1)
    {
        var j=0, i = s.length;
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
            j++;
            s = s.substring(j, i);
    }
    return s;
}

function RTrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);

    if (whitespace.indexOf(s.charAt(s.length-1)) != -1)
    {
        var i = s.length - 1;
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
            i--;
            s = s.substring(0, i+1);
    }
    return s;
}

function Trim(str)
{
    return RTrim(LTrim(str));
}


function test_af_submit(id){
    str = Trim(document.getElementById(id).value);
    if (str == ''){ window.alert('Du mangler at udfylde tekstfeltet'); return false; }
    return true;
}
Avatar billede barklund Nybegynder
12. januar 2006 - 14:43 #2
Kan vist gøres lidt pænere:

function trim(str) {
    var i = 0, j = str.length - 1;
    var whitespace = new String(" \t\n\r");
    while (whitespace.indexOf(str.charAt(i)) != -1) i++;
    while (whitespace.indexOf(str.charAt(j)) != -1 && j > i) j--;
    return str.substring(i, j + 1);
}

:)

--
Morten Barklund
Avatar billede heyn Nybegynder
12. januar 2006 - 16:18 #3
Barklund - jo det ser sandelig nemmere ud.
Skal det forståes at:
1) \t = enter og \r = return
2) At man spørger om whitespace er lig plads 'i' i streng-arrayet str?
3) Hvorfor skal man ikke skrive:
  while (whitespace.indexOf(str.charAt(i)) != -1 && i < j) i++;

Mvh Christian
Avatar billede heyn Nybegynder
12. januar 2006 - 16:26 #4
Betyder det at jeg også kunne anvende rutinen

do{
  len = str.length;
  str = str.replace(/^\t\n\r+/,"");
  str = str.replace(/\t\n\r+$/,"");
  new_len = str.length;
}
while (len != new_len)

Det er bare fordi jeg er nybegynder i reg.exp og gerne vil gøre nogle forsøg

Mvh Christian
Avatar billede roenving Novice
12. januar 2006 - 17:50 #5
\s betyder præcis whitespace, altså \n, \r, \t, \v (vertical tab) og mellemrum, så du kan direkte bruge den, f.eks. sådan:

if(document.formnavn.feltnavn.value.replace(/\s+/g,"").length == 0){
  //der er kun whitespace i strengen !-)
}
Avatar billede nielle Nybegynder
12. januar 2006 - 17:51 #6
str = trim(str);

http://dk2.php.net/trim
Avatar billede nielle Nybegynder
12. januar 2006 - 17:52 #7
Ahh, det er ikke PHP. Sorry :^|
Avatar billede heyn Nybegynder
13. januar 2006 - 10:51 #8
Tak roenving.
Vertikal tab havde jeg ikke tænkt på - men det er jo heller ikke så vigtigt i et textarea - \s er altså prædefinineret som alle ikke synlige tegn.
Tak skal barklund og roenving have.
Mit svar er - Kan i ikke give et SVAR.
Mvh Christian.

P.s. Kender i nogle tuturial- og manual-sider for RegExp?
Kan alle browsere forstå browsere Mozilla, FireFox etc. (og i5) forstå RegExp?
Avatar billede heyn Nybegynder
13. januar 2006 - 10:56 #9
P.s. blev vist lidt uforståeligt og har iøvrigt noget med SVAR at gøre.
Det skulle være:
Kan alle browsere forstå RexExp. Altså Mozilla, FireFox etc. (og ei5)?
Avatar billede roenving Novice
13. januar 2006 - 16:07 #10
Alle nyere browsere kan forstå RegExps, jeg mener det var i javascript 1.1 eller 1.2 det blev indført !-)

-- og et udmærket sted at starte: http://devedge-temp.mozilla.org/library/manuals/2000/javascript/1.5/reference/regexp.html !-)
Avatar billede roenving Novice
13. januar 2006 - 16:07 #11
-- og velbekomme '-)
Avatar billede heyn Nybegynder
13. januar 2006 - 17:19 #12
Ja den ser rimelig cool ud.
God weekend - Christian
Avatar billede roenving Novice
13. januar 2006 - 17:24 #13
Tak for point ;~}
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
Kurser inden for grundlæggende programmering

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