Avatar billede weis Nybegynder
05. juli 2008 - 13:39 Der er 9 kommentarer og
1 løsning

validering af checkboxliste

Hej

Jeg har nogle problemer med at valider mine checkboxlister, jeg har fundet ud af at jeg skal bruge en "CustomValidator", men kan stadig ikke få det til at virke. Samtidig, så bruger jeg "ValidationSummary" til at vise alle fejlene i en alert, og der vil jeg også gerne have checkbox fejlen til at være.

Der skal kun vailders på om mindst en ting er valgt!
Avatar billede roenving Novice
05. juli 2008 - 13:50 #1
-- .NETs evner til at skrive javascript skal bestemt ikke overvurderes, men normalt laves et hæderligt job af Visual Studio, men jeg ville bestemt lave den selv i js ...

F.eks.

<script type="text/javascript">
function validateCheck(f){
  var chks = f.getElementsByTagName("input"), chkd = false;
  for(i=0,im=chks.length;im>i;i++){
    chkd = chkd || chks[i].type == "checkbox" && chks[i].checked;
  }
  return chkd;
}

<form ... onsubmit="return validateCheck(this);">
Avatar billede roenving Novice
05. juli 2008 - 13:51 #2
-- og beskeden laves selvfølgelig ved at checke i funktionen !-)
Avatar billede weis Nybegynder
05. juli 2008 - 13:53 #3
men hvor skal jeg så kalde funktionen? og hvordan for jeg fejlbeskeden ind sammen med de andre der kommer i min "ValidationSummary", jeg har lavet det sådan at der kommer en lille rød stjerne udfra de felter der er fjel i. Altsammen noget der er lavet med .net's egen validation scripts!
Avatar billede roenving Novice
05. juli 2008 - 14:06 #4
Ja, det er jo let at lade VS lave tingene, men skal jeg hjælpe dig, skal jeg se resultatet af VSs arbejde, samt have en ide om, præcis hvordan du koder det !-)

-- var det simpel html med js, ville det være nemt at vise, men ofte sætter VS noget serverside kode ind i forhold til dine forskellige valideringer m.m.m., som ikke gør det så ligetil ...

-- og i øvrigt bør den slags check af hensyn til brugervenligheden laves rent clientside i første omgang, selvom det ikke betyder, at man kan lade være med at checke det når formularen modtages på serveren !o]
Avatar billede weis Nybegynder
05. juli 2008 - 14:18 #5
Okay, jeg har lagt siden op på http://flyveren.aweis.dk/Admin/Nyheder.aspx og så er det under punktet "Opret en nyhed" der har jeg 3 checkboxe, kan se at * fx er noget med en span hvor display er none osv. men synes resten af VS's javascript er lidt uoverskueligt!
Avatar billede roenving Novice
05. juli 2008 - 14:36 #6
Jepz, det er uoverskueligt, men du kunne måske sætte det ind hardcoded, altså fjerne den CustomValidator, og så skrive det:

    <form name="aspnetForm" method="post" action="Nyheder.aspx" onsubmit="return validateCheck(this) && WebForm_OnSubmit();" id="aspnetForm">

<script type="text/javascript">
function validateCheck(f){
  var chks = f.getElementsByTagName("input"), chkd = false;
  for(i=0,im=chks.length;im>i;i++){
    chkd = chkd || chks[i].type == "checkbox" && chks[i].checked;
  }
  if(!chkd){
    document.getElementById("ctl00_ctl00_mainPage_content_testete").style.visibility = "visible";
    alert("Husk at udfylde nyhedstypen");
    return false;
  }
}
Avatar billede weis Nybegynder
05. juli 2008 - 14:40 #7
jeg kan vel ikke hardcode så meget! da den selv laver formen udfra min masterpage, så den har jeg vel ikke direkte adgang til fra min underside!

Og alerten for mine checkboxe skal på en eller anden måde smeltes sammen med den som ValidationSummary laver, så brugeren ikke får to alerte med fejl!
Avatar billede weis Nybegynder
05. juli 2008 - 15:19 #8
Jeg fandt denne side http://aspnet.4guysfromrolla.com/articles/092006-1.aspx, som udbygger .net's egen validerings klasse til at kunne klare checkboxe og lister, så jeg har få det til at virke som det skal, du må gerne få nogle point for dine gode løsningsforslag :-)
Avatar billede roenving Novice
06. juli 2008 - 14:06 #9
4guysfromrolla har lavet adskillige rigtige gode løsninger, hvis man tænker det rent i asp.NET sammenhæng, men da jeg selv lærte C# og .NET kom jeg rigtig mange gange til at tænke på, at resultatet var rent tåbeligt og gav rigtig mange omkostninger for klienten, som var voldsomt uhensigtsmæssige ,-(

-- men bruger man Visual Studio og laver .NET-applikationer er det ofte uhensigtsmæssigt at tænke andre tanker, og som du gør opmærksom på, vil de andre indsatte funktioner give komplikationer, der gør det svært at lave egen hensigtsmæssig kode !-)

-- det kan lade sig gøre, men meget tit er det enormt meget sværere end bare at bruge de indbyggede funktioner eller f.eks. det library, du har fundet på 4guysfromrolla, selvom det er hul i hovedet at gå de omveje, hvis man tænker det fra brugerens (hans browsers !-) synspunkt !o]

-- og da jeg tænte fra starten, at det kunne være en omvej, kan du bare beholde dine point selv !-)
Avatar billede weis Nybegynder
08. juli 2008 - 12:30 #10
svar :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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