Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
function checkform(thisform) { // startværdier var strerror = 'der opstod følgende fejl:\n\n', interror = 0, reNumber = /^\d+$/g;
for(i=1; i <= <%=request("antal")%>; i++) { var elm = thisform.elements["stole_" + i]; //check e-mail nyhedsbrev, er den tom if (elm.value == "") { strerror = strerror + '- Stol' + i +' feltet er tomt\n' interror = 1; elm.focus(); }
if(!reNumber.test(elm.value)) { strerror = strerror + '- Stol' + i +' feltet er ikke et tal\n' interror = 1; elm.focus(); } }
if (interror == 1) { alert(strerror) return false; } }
Og hvordan ser dit input ud (dvs. den tekst du indtaster i feltet der fejler)? Du er nok nød til at sætte teksten i anførselstegn for at illustrere evt. mellemrum og andre tegn tydeligt. F.eks. " 6" eller "nr 5".
Undskyld at en gammel krakilsk, gråhåret mandsperson blander lidt malurt i bægeret (hvordan det så end smager), men ...
En valideringsfunktion skal (i betydningen skal) aflevere enten false eller true som funktionsresultat.
I alle eksemplerne ovenfor afleveres kun false, eller ingenting, og det vil ikke virke generelt (dvs. i alle browsere, version osv).
Ole er velkommen til at grave i hans ufattelige viden om Javascript, og pege på den lille bemærkning i dokumentationen, der sig at jeg tager fejl (og så skylder jeg ham en discountøl fra Tyskland)
@Erik: Jeg må bede dig grave i din samling af gamle browserversioner og finde den, der ikke submitter denne form:
<form action="" onsubmit="return void(0)">
- og det samme gælder såmænd i en onclick-handler på et link.
Jeg forstår sådan set godt, hvad du mener, men sådan forholder virkeligheden sig ikke. Når en handler sættes som attribut på et HTML-element, skal den returnere eksplicit false for at stoppe event'en.
Nu er det så heldigt, at min viden ikke begrænser sig til JavaScript. Derfor ved jeg også, at hvis der skal findes dokumentation på fænomenet, er det ikke under JavaScript, men under DOM-specifikationerne - evt. Script/DOM-bindingerne. Om - og i så fald, hvor - det er omtalt, ved jeg dog ikke =)
Og ehhhh, Erik ... så er der lige den lille detalje, at hovmod nomalt ikke er noget, jeg veksler til discountøl. Det koster trappist øl - og i overmål koster det Laphroaig islay whisky ... i overmål! *D
Indtil videre er optjeningen kun en halv Cola Light (discount fra Rema 1000), for den interessante diskussion.
Det jeg egentlig spurgte dig om, Ole: Hvor står der i officielle papirer, at det bør virke som du beskriver.
Så kan det være jeg må revidere mit standpunkt.
Din eksempelkode virker bestemt som du skriver. Jeg har ikke adgang til gamle browsere som sådan, men kan måske fyre op under en Windows 3.11, og se hvad der sker.
"OnSubmit A submit event occurs when a user submits a form. JavaScript requires you to return true in the event handler to allow the form to be submitted; return false to prevent the form from being submitted. This attribute is used only with the FORM element."
Ja, det er svært at finde relevante tekster om emnet, som ikke er skrevet i runer. Faktisk tror jeg, det er en af de mange ting, som ikke er defineret i rekommendationerne.
Noget af det nyeste, jeg har fundet er [url=http://lists.w3.org/Archives/Public/public-whatwg-archive/2006Jul/0107.html]denne kommentar af Dean[url], som ret klart understøtter antagelsen om, at kun return===false må cancel'e event'en. Det er nok så officielt, det kan blive =)
Derudover må jeg minde dig om, at din bombastiske påstand lød:
"En valideringsfunktion skal (i betydningen skal) aflevere enten false eller true som funktionsresultat.
I alle eksemplerne ovenfor afleveres kun false, eller ingenting, og det vil ikke virke generelt (dvs. i alle browsere, version osv)."
Der påhviler således ikke mig nogen bevisbyrde. Jeg mener som sagt ikke, det er eksplicit defineret, så det må være din opgave at fremskaffe bevis for, at hovmodigheden ikke var fejlplaceret *o)
Desværre tror jeg ikke Laphroaig kan fås i større flasker end én liter :D
Noget af det nyeste, jeg har fundet er denne kommentar af Dean, som ret klart understøtter antagelsen om, at kun return===false må cancel'e event'en. Det er nok så officielt, det kan blive =)
Du har helt sikkert forspildt en karriere i det diplomatiske korps, Ole. Eller i reklameverdenen. Eller som politiker (men i disse dage er det jo det samme som reklameverdenen)
Dit link understøtter nemlig fint din antagelse. Men samtidig støtter det min, for det er ikke en officiel documentation af virkemåden. Og jeg synes din erkendelse er helt til ug: "ret klart" ;)
Det er naturligvis korrekt at vi nok ikke finder en gængs browser i dag, hvor det ikke gælder, men det udelukker ikke fremtidige, tidligere, eller nuværende.
Mit horoskop siger at jeg skal være konstruktiv i september måned, så lad mig på den sidste dag i måneden reformulere min lettere bombastiske formulering ovenfor:
Det kan kraftigt anbefales at lave en "return true", både som livrem-og-seler forsikring mod kreative browserudviklere, og for at gøre valideringsfunktion anvendelig både i en onsubmit-attribut, og direkte i en if-sætning lige før man bestemmer sig for at submitte sin form med .submit().
if (void(0)) og if(false) opfører sig nemlig ret ens.
Apropos livrem-og-seler forsikring, så havde min forsikringsmand et sjovt udtryk i ansigtet, da jeg bad om prisen for en tillægsforsikring til dækning af skader i haven forvoldt af løsgående isbjørne. Han mente, efter et stykke tid, at det nok var inkluderet allerede.
PS: Hvis du skaffer 2 stk 1 liter Laphroaig, så skaffer jeg en to liter cola flaske det kan omhældes på. Men jeg forstår nok ikke helt problemet.
Til gengæld tror jeg, der er gået en stor bankrådgiver tabt i dig - ikke mindst hvis du også kan få flg. tekst til at fremstå som argument for din opfattelse:
When an event handler's Function object is invoked, its call() callback must be invoked with one argument, set to the Event object of the event in question.
The handler's return value must then be processed as follows: *) If the event type is mouseover If the return value is a boolean with the value true, then the event must be canceled. *) If the event object is a BeforeUnloadEvent object If the return value is a string, and the event object's returnValue attribute's value is the empty string, then set the returnValue attribute's value to the return value. *) Otherwise If the return value is a boolean with the value false, then the event must be canceled.
NB: Hvis returværdien er false, skal event'en cancel'es.
Altså: Er returværdien ikke false, skal event'en ikke cancel'es.
Det er ikke 'ret klart'. Det er i forhold til meget andet i rekommendationerne klart som bøhmisk krystal. I hvertfald kan der næppe herske tvivl om fremtidige browseres opførsel på området =)
Men du må fortsat gerne - ligesom jeg selv gør - sikre dig med både livrem og seler og altid returnere true som default *o)
Jeg skaffer skam gerne de to flasker - og et girokort på dem *D
Ingen tvivl om at de er blevet bedre til at udtrykke sig klart. I diverse Working Drafts til HTML 5 er der formuleringer som "if the return value is false", som kan opfattes på indtil flere underholdende måder.
Og det er selvfølgelig det man bruger WDs til at opdage.
Pre HTML5 kan være en anden sag, og jeg har ikke de gamle browsere til at undersøge det med. Og en hurtig googling gav heller ikke noget.
Men Ole, du har da fortjent noget bedre end en tysk discountøl. Jeg har sådan set heller ikke flere tilbage.
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.