Avatar billede lightbrain Nybegynder
25. juli 2002 - 22:35 Der er 19 kommentarer og
1 løsning

Undersøg første linie i textarea?

Hej

Jeg har brug for et script, som undersøger om den første linie, som en bruger har indskrevet i et textarea, er lig med værdien "God dansk madlaving" samt et linieskift (hvad man vil kalde en titel). I så fald skal scriptet returnere sandt.
Avatar billede jakoba Nybegynder
25. juli 2002 - 22:51 #1
<script type='text/javascript'>

var noegle = "god dansk madlavning";

function testNoegle ( ) {
    var linPos = noegle.length;
    var ptr = document.formularnavn.feltnavn; // udskift med dine navne

    if ( ptr.value.substr(0,linPos).toLowerCase() == noegle ) {
        if ( ptr.value.charAt(linPos) == "\n" ) return true; // ok done
        if ( ptr.value.charAt(linPos) == "\r" ) return true; // ok done
    }
    return false;  // beklager indholdet af eltet macher ikke til noeglen
}

</script>


et kald til  testNoegle()  vil nu returnere true hvis betingelsen er opfyldt.
Avatar billede lightbrain Nybegynder
26. juli 2002 - 11:29 #2
Det skulle da vidst have været et svar :-)
Avatar billede jakoba Nybegynder
26. juli 2002 - 11:31 #3
nåja :)
Avatar billede lightbrain Nybegynder
26. juli 2002 - 21:12 #4
Jeg kan ikke forstå, hvorfor den siger, at "'value' is null or not an object" ved linie "var ptr = document.AdminT.tekst.value;", når nu den linien før, kunne udskrive dens værdi korrekt. Kan du udregne mysteriet?

function valider () {

    noegle = document.AdminT.titel.value;
    var linPos = noegle.length;
    alert(document.AdminT.tekst.value);
    var ptr = document.AdminT.tekst.value;

    if ( ptr.value.substr(0,linPos).toLowerCase() == noegle ) {
       
        if ( ptr.value.charAt(linPos) == "\n" || ptr.value.charAt(linPos) == "\r" ) {
            alert ("ens"); // ok done
            return false;
        }
    }

    alert ("ikke ens")
    return true;
}
Avatar billede jakoba Nybegynder
26. juli 2002 - 21:39 #5
der skal ikke stå .value der. kun
    var ptr = document.AdminT.tekst;  // ikke .value her
Avatar billede lightbrain Nybegynder
26. juli 2002 - 22:01 #6
Ja, det hjalp. Scriptet fungerer nu efter planen, og det skal du have mange tak for. Jeg har lige 2 sidste spørgsmål:

1) Hvad betyder "\r"?
2) Var http://www.eksperten.dk/spm/239686 for svær, eller har du bare overset dette spørgsmål?
Avatar billede jakoba Nybegynder
26. juli 2002 - 22:09 #7
linieskift kan laves med 2 forskellige 'usynlige' bogstaver.
\n = <line feed> = ascii kode 10
\r = <carriage return> = ascii kode 13

det er forekelligt på forskellige computere hvilken anf dem styresystemet bruger (der er også nogen der bruger begge to efter hinanden).
alle bogstaver har en kode: http://www.neurophys.wisc.edu/www/comp/docs/ascii.html

mvh JakobA
Avatar billede lightbrain Nybegynder
28. juli 2002 - 11:11 #8
Den videre udvikling af script er gået i stå - please help: http://www.eksperten.dk/spm/240198
Avatar billede jakoba Nybegynder
28. juli 2002 - 13:33 #9
så lad os lave det med en regular expression istedetfor:

var noegle = "god dansk madlavning";  // titel der skal genkendes

var rExp = new RegExp( "^ *" +noegle +" *$", "i" );
    // matcher enhver linie der indeholder din noegle med
    // evt nogen blanktegn før og efter.

if ( rExp.test( document.formularnavn.feltnavn.value )
  && RegExp.leftContext.length == 0 ) {
    return true; // 'we have a match'
} else {
    return false: // det matcher ikke.
}

mvh JakobA
Avatar billede lightbrain Nybegynder
28. juli 2002 - 15:36 #10
Det virker jo fremragende - men linien (kode) som gjorde, at der kun blev checket i første linie (tekst), er faldet ud. Kan du ikke koble den på igen (for brugeren må jo gerne skrive det samme ord nede i tekst, bruger må bare ikke skrive det i starten, for så gentager brugeren titlen, som - i eksempel - allerede findes i et artikelhoved.)

PS. Husk at trykke 'svar'.
_____________________________________________________________

function valider (frm, noegle) {
   
    var noegle = "god dansk madlavning";  // titel der skal genkendes

    var rExp = new RegExp( "^ *" +noegle +" *$", "i" );
    // matcher enhver linie der indeholder din noegle med
    // evt nogen blanktegn før og efter.

    if ( rExp.test( frm.tekst ) && RegExp.leftContext.length == 0 ) {
        alert("titel er ikke gentaget");
        return true; // 'we have a match'
    } else {
        alert("titel er gentaget");
        return false; // det matcher ikke.
    }
}
Avatar billede lightbrain Nybegynder
28. juli 2002 - 15:38 #11
Ups, linien...
var noegle = "god dansk madlavning";  // titel der skal genkendes
... skulle ikke med, den skal bare slettes.
Avatar billede jakoba Nybegynder
28. juli 2002 - 17:39 #12
Det var sørens. det var meningen at
    RegExp.leftContext.length == 0
i if-betingelsen skulle sørge for at det kun var i første linie. Men det gør den altså ikke :(.

function valider (frm, noegle) {
 
    var rExp = new RegExp( "^ *" +noegle +" *$", "i" );
    // matcher enhver linie der indeholder din noegle med
    // evt nogen blanktegn før og efter.

    var linier = frm.tekst.split("\n");
        // øh, skulle det ikke være frm.tekst.value.split("\n") ?
        // altså value med.

    if ( rExp.test( linie[0] ) ) {
        alert("titel er ikke gentaget");
        return true; // 'we have a match'
    } else {
        alert("titel er gentaget");
        return false; // det matcher ikke.
    }
}

mvh JakobA
Avatar billede lightbrain Nybegynder
28. juli 2002 - 18:16 #13
Koden kom nogle fejl, som jeg rettede:
linier[0] -> linier[0]
frm.tekst.split -> frm.tekst.value.split

Men nu siger den altid, at titlen er gentaget, lige meget om teksten er tom :-)

______________________________________


function valider (frm, noegle) {
 
    var rExp = new RegExp( "^ *" +noegle +" *$", "i" );
    // matcher enhver linie der indeholder din noegle med
    // evt nogen blanktegn før og efter.

    var linier = frm.tekst.value.split("\n");

    if ( rExp.test( linier[0] ) ) {
        alert("titel er ikke gentaget");
        return true; // 'we have a match'

    } else {
        alert("titel er gentaget");
        return false; // det matcher ikke.
    }
}
Avatar billede lightbrain Nybegynder
28. juli 2002 - 18:17 #14
Fårk...
linier[0] -> linier[0] = linie[0] -> linier[0]
Avatar billede lightbrain Nybegynder
28. juli 2002 - 18:24 #15
>>// matcher enhver linie der indeholder din noegle med
Men den behøver jo kun at matche den første linie...
Avatar billede jakoba Nybegynder
28. juli 2002 - 19:03 #16
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
    <TITLE>Sammenlign titel</TITLE>

<META NAME="Generator" CONTENT="Stone's WebWriter 3">
<script type='text/javascript'> <!-- //>

function valider (frm, noegle) {

    var rExp = new RegExp( "^ *" +noegle +" *$", "i" );
    // matcher enhver linie der indeholder din noegle med
    // evt nogen blanktegn før og efter.

    var crPos = frm.tekst.value.indexOf("\r");
    var lnPos = frm.tekst.value.indexOf("\n");
    var pos = 500
    if ( crPos > 0 ) { pos = crPos; };
    if ( lnPos > 0 ) { pos = Math.min( pos, lnPos ); };
    var linie = frm.tekst.value.substr(0,pos);

    if ( rExp.test( linie ) ) {
        alert( "titel er gentaget\n" +linie +"\n" +noegle );
        return true; // 'we have a match'
    } else {       
        alert( "titel er ikke gentaget" );
        return false; // det matcher ikke.
    }
}; //end valider( Form object, string ) -> boolean



// --> </script>

</HEAD>
<BODY>

<form onsubmit='return false'>

<textarea name='tekst' rows='10' cols='65' wrap='logical'>  God Dansk Madlavning
Er ved at blive en mangelvare her i landet.
Der kommer flere og flere udenlandske indslag
i vore spisevaner, pizza, burgers, kebab,
hot-dogs og vienerbrød.

Hvad er der blevet af den gode danske byggrød?
Af vore hæderkronede og traditionsrige gule ærter
med kogt flæsk? ...
</textarea><br>
<input name='key' type='text' value="God Dansk Madlavning"> &nbsp;
<input type='button' value="test" onclick="valider(this.form,this.form.key.value)">

</form>

<!-- WebWriter AutoDato -->Opdateret: 28.7.2002<!-- WW -->
</BODY>
</HTML>

rettet noget og nu virker den for mig.

mvh JakobA
Avatar billede lightbrain Nybegynder
28. juli 2002 - 19:30 #17
Jammen, det er jo så smukt, som det er skrevet :-)

Jeg takker :-)

if (user == "jakoba") {
  alert("Tryk lige 'svar'.");
}
Avatar billede jakoba Nybegynder
28. juli 2002 - 19:41 #18
Jeg har allerede fået points. :-)
Avatar billede lightbrain Nybegynder
28. juli 2002 - 19:47 #19
Nå ja - den forsvandt i mængden af kommentarer.
Avatar billede lightbrain Nybegynder
31. juli 2002 - 16:37 #20
Jeg ved godt at du har hjulpet hel hen til målstregen, men jeg kan åbentbart ikke selv finde ud at tage det sidste skridt ind over målstregen.

Jeg har nogle event-problemer med det script, som du har lavet til mig:
http://www.eksperten.dk/spm/241210 (Skriv venligst dit svar under det angivende indlæg, så jeg kan give dig nogle points.)
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