31. juli 2000 - 13:11Der er
10 kommentarer og 2 løsninger
Dynamisk checkbox validering
Jeg har søgt lidt rundt her i Eksperten, men er ikke kommet en løsning op mit problem nærmere.
Jeg har en form med et ubekendt antal checkboxe (Den er dynamisk genereret), som jeg gerne vil lave et check på, om der er krydset minimum en box af.
Følgende kode har jeg fået bikset sammen til at markere eller afmarkere det dynamiske antal checkboxe, men har som skrevt ikke kunne hitte ud af at finde af lave en ValidateCheck funktion, og da det iritere mig grænseløst, er her 100 point.
function selectAll() { with (document.forms[0]) { for (i = 0; i < elements.length; i++) { if (elements[i].name == \"CheckboxID\") { elements[i].checked = true; } } } } function selectNone() { with (document.forms[0]) { for (i = 0; i < elements.length; i++) { if (elements[i].name == \"CheckboxID\") { elements[i].checked = false; } } } }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
function ValidateCheck(){ var dfe = document.forms[0].elements; var dfl = dfe.length; var foundCheck = false for (var i=0; i<dfl; i++){ if (dfe[i].type==\'checkbox\'&&dfe[i].checked){ foundCheck = true; break; } }
if (foundCheck){ // Jaa, vi fandt en checkbox der var afkrydset } else { // Øøøv } }
<ole> verasko >> Undskyld, jeg lige bruger dit spørgsmål til at opklare noget for mig selv, men det kunne måske have almen interesse.
Erik >> Jeg har noteret mig, du tit laver dine valideringer på en \'onsubmit\'-handler. Stopper det submit-handlingen, hvis validerings funktionen returnerer \'false\'? Dvs: Ligger handlingen, der udløses af \'onsubmit\'-handleren før eller efter selve afsendelsen? Jeg validerer altid selv med en <input type=\"button\"> med en \'onclick\'-handler - og lægger så en \'document.formNavn.submit();\' i slutningen af valideringsfunktionen. Det gør jeg for at være sikker på afsendelsen stoppes - men er det nødvendigt? /Vh </bole>
olebole, når du har deklareret en onsubmit event handler til din form, vil denne funktion blive udført før selve afsendelsen af formen.
Derefter vil formen blive afsendt hvis din funktion returnerer true, og gøre ingenting hvis du returnerer false.
Om du vil bruge onsubmit eller onclick/submit() er en enten/eller sag, enten det ene eller det andet! Når du laver en document.formNavn.submit(), vil den ikke udføre din onsubmit event handler funktion og når du laver en onsubmit event handler funktion submittes formen afhængigt af hvad du returnerer.
Så det er blot et spørgsmål om hvorhenne du víl validere din form.
Tak Thor. Jeg var bare ikke klar over, om \'return false\' fra en funktion udløst af en \'onsubmit\'-handler stoppede submitting - det gør den altså! ;-)
Den anden sammenrodning ses jo af og til her på stedet, så det var nok meget godt lige at få det slået det fast igen. /Vh
Er det nu ligemeget? IE fyrer jo en submit af, hvis man trykker på retur i et tekstfelt. Det bliver ikke fanget med Oles metode, men med min. Det er godt nok lidt tidligt på dagen, men jeg tror nok at min er den \"eneste rigtige\" ;-))
1. præmien gik til Erik, da den valgte metode ligger tæt på det jeg ønskde. 2. pladsen fik jumper, da hans løsning ligner meget den vej jeg selv var påvej med, men som skrevet så er Eriks den \'pæneste\'. Desuden har jeg rodet lidt med onSubmit event handleren, og har nogle gange gjort ligesom Ole. Ud over den grund som Erik påpeger, så holder jeg selv bedst af, at ense kode også er let tilgængelig for andre, dermed ensrettet, og da man hyppigst bruger submit buttons, er den bedst med en fast praksis at bruge onSubmit eventen.
Måske skulle jeg lige fylde op og poste hele svineriet, så andre måske kan lære noget...
<SCRIPT LANGUAGE=\"JavaScript\"> function selectAll() { with (document.forms[0]) { for (i = 0; i < elements.length; i++) { if (elements[i].name == \"ID\") { elements[i].checked = true; } } } } function selectNone() { with (document.forms[0]) { for (i = 0; i < elements.length; i++) { if (elements[i].name == \"ID\") { elements[i].checked = false; } } } } function validateCheck(f) { for (i = 0; i < f.elements.length; i++) { if (f.elements[i].name == \"ID\" && f.elements[i].checked) { return true; } } alert(\'Please choose one or more\'); return false }
Ok - det var lidt tidligt på dagen.... Hvis der IKKE er en submit knap, vil IE4 ikke submitte formen ved tryk på retur. Men hvis der kun er ét tekstfelt, så vil NS4.5 faktisk lave en submit, som ikke ville blive checket af en evt. onclick på en button. Det var ikke helt så slemt som frygtet, men min metode er \"mest rigtig\" - ;-)
Erik >> Frygt ej...vi er hos dig ;o)) Argumentet med NS faldt jeg jo som ventet pladask for...Hehe! Mine valideringsvaner er hermed under \'omformatering\'. Tak, begge to. /Vh
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.