25. juli 2002 - 22:35Der 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.
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; } }
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
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. } }
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. } }
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"> <input type='button' value="test" onclick="valider(this.form,this.form.key.value)">
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.)
Synes godt om
Ny brugerNybegynder
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.