Avatar billede kovalt Nybegynder
03. maj 2005 - 15:55 Der er 22 kommentarer og
1 løsning

Tjekke om et antal text-felter er udfyldt

Hej

  Jeg har en række text-felter, hvis antal varierer i forhold til noget ASP jeg laver siden i.

Lad os sige jeg har syv text-felter på siden og at kravet er at 5 af disse skal være udfyldt. I så fald har jeg toasp-variable som indeholder værdierne 5 og 7.

  Kan jeg lave et javaScript som tjekker om i ovenstående eksempel 5 af de 7 felter ud udfylte og i så fald aktivere den submit-knap som skal gøre at siden kan submittes.

/kovalt
Avatar billede kovalt Nybegynder
03. maj 2005 - 15:56 #1
den behøver ikke kunne aktivere en knap.... det er nok hvis den bare returnerer false.
Avatar billede busschou Praktikant
03. maj 2005 - 15:59 #2
Hvis dine input felter har id=1 til 7 så kan du vel lave en løkke
--
function tjek(){
counter = 0;
for(i=1;i<=7;i++){
  if (document.getElementsById(i).value != ""){
  counter = counter + 1;
  }
  if (counter >= 5){
  return true
  }else{
  return false
  }
}
}
--
Og så din form
<form onsubmit="return tjek();">
Avatar billede kovalt Nybegynder
03. maj 2005 - 16:02 #3
grænserne er ikke fastsat på forhånd men bliver til igennem noget ASP. Hvordan overfører jeg værdierne fra ASP'en til javaScript?

skal jeg gemme den nede i nogle hidden-felter og så requeste disse i javaScript
Avatar billede busschou Praktikant
03. maj 2005 - 16:04 #4
Jeg ved ikke hvordan du overfører mellem javascript og asp desværre.
Men hvis alt alligevel vælges gennem asp...så kunne du jo overveje at lave valideringen i asp også
Avatar billede kovalt Nybegynder
03. maj 2005 - 16:07 #5
jeg vil bare gerne undvære at siden bliver submittet
Avatar billede busschou Praktikant
03. maj 2005 - 16:08 #6
okey.. jeg ved desværre ikke hvordan man overfører variablen
Mit bedste bud er så at lade asp udskrive dit script dynamsik ligesom din form
Men måske andre har en bedre løsning :o)
Avatar billede kovalt Nybegynder
03. maj 2005 - 16:21 #7
jeg får fejlen "expected ;" på følgende

checkAntalLoeber(){
    intKravAntal = document.tilmeldForm.vejlAntalLoeber.value;
    counter = 0;
    for(i=1;i<=intKravAntal;i++){
      if (document.getElementsById(i).value != ""){
          counter = counter + 1;
      }
      if (counter >= 5){
        return true
      }else{
        alert('Du har ikke udfyldt det påkrævede antal løbere');
        return false
      }
    }
}

hvad er der galt
Avatar billede luzk Nybegynder
03. maj 2005 - 16:21 #8
Er det samme side der laver din ASP kode og din JacaScript kode?

/Luzk
Avatar billede kovalt Nybegynder
03. maj 2005 - 16:22 #9
lezk -> ja
Avatar billede kovalt Nybegynder
03. maj 2005 - 16:34 #10
nu får jeg en fejl på følgende linie:

if (document.getElementsById(i).value != ""){

fejlen er "object dosnt support this property or method
Avatar billede kovalt Nybegynder
03. maj 2005 - 16:34 #11
mangler der et forms[0]?
Avatar billede busschou Praktikant
03. maj 2005 - 16:37 #12
du kan godt bruge document.forms[0].i.value
Men så skal "i" vist være et name og ikke et id tror jeg
Avatar billede luzk Nybegynder
03. maj 2005 - 16:41 #13
Så kan du benytte busschou's metode med at skrive til JavaScripten.

Hvis fx dine ASP variable hedder variabel1 og variabel2 kan du gøre følgende:
function tjek(){
counter = 0;
for(i=1;i<=<%=variabel1%>;i++){
  if (document.getElementsById(i).value != ""){
  counter = counter + 1;
  }
  if (counter >= <%=variabel2%>){
  return true
  }else{
  return false
  }
}
}

(jeg har taget udgangspunkt i busschou's script - ikke testet)

/Luzk
Avatar billede kovalt Nybegynder
03. maj 2005 - 16:42 #14
nu er det sådan at alle text-felterne hedder "navn". Er der en måde hvorpå jeg kan loope igennem dem?
Avatar billede kovalt Nybegynder
03. maj 2005 - 16:43 #15
luzk -> Variablene i ASP bliver først definere længere nede på siden. Er det sådan at jeg kan flytte javascriptet ned i bunden af min kode og afvilkle det derfra?
Avatar billede busschou Praktikant
03. maj 2005 - 16:44 #16
document.getElementsByName("navn").length er antallet af dem ...så ja :o)
Avatar billede luzk Nybegynder
03. maj 2005 - 16:46 #17
Ja hvis ikke andet er afhængigt af din JavaScript kan du sagtens flytte det derned...

Det er ikke den mest optimale måde, men det virker (måske :o))

/Luzk
Avatar billede kovalt Nybegynder
03. maj 2005 - 16:57 #18
kan man lave noget i denne stil:

function checkAntalLoeber(){
    intKravAntal = document.tilmeldForm.vejlAntalLoeber.value;
    counter = 0;
    for(i=1;i<=intKravAntal;i++){
      if (document.getElementsById('navn'&i).value != ''){
          counter = counter + 1;
      }
      if (counter >= intKravAntal){
        return true
      }else{
        alert('Du har ikke udfyldt det påkrævede antal løbere');
        return false
      }
    }
}

altså hvor jeg navngiver mine elementer "navn1", "navn2" etc. Er syntaxen korrekt - jeg får stadig fejl på linien

      if (document.getElementsById('navn'&i).value != ''){
Avatar billede luzk Nybegynder
03. maj 2005 - 17:04 #19
I JavaScript bruger man + istedet for &

så prøv
if (document.getElementsById('navn'+i).value != ''){

/Luzk
Avatar billede kovalt Nybegynder
03. maj 2005 - 17:10 #20
jeg får stadig fejlen

"object dosn´t support this property or method"

på den linie
Avatar billede kovalt Nybegynder
03. maj 2005 - 17:16 #21
nogen forslag til det? der er et element der hedder navn1 - hvad kan det ellers skyldes?
Avatar billede roenving Novice
11. maj 2005 - 00:46 #22
<input id="navn1"> ?-)
Avatar billede kovalt Nybegynder
16. november 2005 - 10:36 #23
lukker spm
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