Avatar billede bigo Nybegynder
25. marts 2003 - 15:09 Der er 14 kommentarer og
2 løsninger

teste værdien i et andet inputfelt end det man er i nu!"?

Hejsa.

jeg har 2 (eller flere) inputfelter. og på det ene kalder jeg et javascript for at test om syntaxen i det indtastede er korrekt. Men det er afhængigt hvad der er valgt i en tidligere selectbox i formen.

og det kan jeg ikke greje hvordan.

jeg ved at :

function test(Element)
{
  if (isNaN(Element.value)) alert ('Det skal være et tal!');
}
........
<input name=ting onclick='test(this)'>

så der refererer jeg direkte til selve feltet. Men et andet felt i formen ???
Avatar billede grunken Nybegynder
25. marts 2003 - 15:28 #1
er det tal der skal være i alle inputs ???

-grunken
Avatar billede mhylle Nybegynder
25. marts 2003 - 15:46 #2
Det her burde give dig det ønskede resultat
<script language="javascript">
function test(Element) {
    if (document.tester.elements["enting"].value == Element.value) {
        alert("de har samme værdi");
    }
    else {
        alert("de har ikke samme værdi");
    }
}
</script>

<form action="enellerandeside.html" name="tester">
<input name="enting" value="">
<input name="entilting" value = "" onclick="test(this)">
</form>
vh
Martin
Avatar billede Slettet bruger
25. marts 2003 - 15:47 #3
Således:

function test(Element) {
  if (isNaN(Element.form.andetFeltNavn.value))
    alert("Det skal være et tal!");
}
Avatar billede bigo Nybegynder
25. marts 2003 - 15:57 #4
hmm. jeg får

document.aclchangeform.elements.protocolselect.value
is not a value or not an object.
men jeg har en

<select name=protocolselect>

i min form.. darn..
Avatar billede bigo Nybegynder
25. marts 2003 - 16:02 #5
koden ser ud som følger:


function ValidatePort(Element)
{
  if (document.form.protocolselect.value == 'icmp')
  {
    alert ('Hejsan');
  }
}

og senere:

<form action=$PHP_SELF method=post name=aclchangeform>
...
<select name=protocolselect[$x]>
  <option value='ip'".(($protocolselect) ? dropdown($protocolselect[$x], 'ip') : "").">IP
  <option value='tcp'".(($protocolselect) ? dropdown($protocolselect[$x], 'tcp') : "").">TCP
  <option value='udp'".(($protocolselect) ? dropdown($protocolselect[$x], 'udp') : "").">UDP
  <option value='icmp'".(($protocolselect) ? dropdown($protocolselect[$x], 'icmp') : "").">ICMP
</select>

....

<input type=text name=portfraselect[$x] value='$portfraselect[$x]' size=7 onblur='ValidatePort(this)'>
Avatar billede mhylle Nybegynder
25. marts 2003 - 16:12 #6
Ved at ændre dit check i formen til det her:
document.aclchangeform.elements["protocolselect"].value == 'icmp'
fik jeg det til at virke.
/Martin
Avatar billede olebole Juniormester
25. marts 2003 - 20:42 #7
<ole>

Ret dit input-element til:
  <input type=text name=portfraselect[$x] value='$portfraselect[$x]' size=7 onblur='ValidatePort(this.form)'>

Nu sendes formen med som argument. Atså kan du hive fat i andre elementer med:

function ValidatePort(f) {
  alert(f.protocolselect);
}

... men din select hedder jo ikke 'protocolselect' ... men 'protocolselect[ET-ELLER-ANDET]'.
Brackets i element-navne er generelt noget 'gris', som ikke er umiddelbart i overensstemmelse med JavaScript-standarden. Det er en dårlig PHP-vane.

Under alle omstændigheder, må du finde ud af, hvad den select hedder, før den kan kaldes  :)

/mvh
</bole>
Avatar billede bigo Nybegynder
25. marts 2003 - 21:03 #8
olebole> hmm. det har du jo ret i.. den der [$x] er en "tæller" over hvilken linie vi er på nu. så kan jeg holde styr på arrayet. Men hvordan skal jeg så fortælle mit javascript at det er protocol nr. x jeg skal teste?

uanset hvilken metode (oleboles eller mhylles) så får jer

mhylle:
Fejl: 'document.aclchangeform.elements.protocolselect.value er null eller ikke et object'

olebole:
en alertbox med : Undefined
og derefter
Fejl: 'Element' ikke defineret.
Avatar billede bigo Nybegynder
25. marts 2003 - 21:14 #9
og derefter
Fejl: 'Element' ikke defineret.

klart.. element er IKKE defineret ved en validateform(this.form)..

he.. sorry for den der..
Avatar billede olebole Juniormester
25. marts 2003 - 22:55 #10
Ja, det er jo klart, du får en fejl, når du kalder på et element, der ikke eksisterer. Du kalder jo ikke med det navn, elementet har.

Jeg har ingen idé om, hvad der står i den tæller ... det ved kun du.
Men jeg prøver igen: Det er en dårlig løsning at bruge brackets i element-navne.
Avatar billede mhylle Nybegynder
25. marts 2003 - 23:23 #11
Klart at du får en fejl på document.aclchangeform.elements.protocolselect.value
protocolselect findex jo ikke..
Kan kun give olebole ret, undgå brackets i element navne..
Hvis du vil have dynamiske navne på dine select elementer kan du løbe igennem alle form felter med den her kode(hvis du altså har lavet rettelsen med at sende formen med istedet for):
function ValidatePort(f) {
for (var i=0;i<f.length;i++) {
  frmFelt= f.elements[i];
  alert(frmFelt.name + " har værdi: " + frmFelt.value);
}
Avatar billede bigo Nybegynder
26. marts 2003 - 11:08 #12
jeg tror vist jeg har fattet det nu.. øv ;-)

OleBole.. smid lige et svar osse.. i fortjener begge points..
Avatar billede olebole Juniormester
26. marts 2003 - 13:48 #13
swaaaar  :)
Avatar billede bigo Nybegynder
28. marts 2003 - 13:25 #14
phoenixv> Hvordan kalder du den funktion.. med hvilke data osv..

kan du evt. vise komplet kode for fungerende eksempel på at man f.eks. har et emailfelt og en submit knap hvor emailfeltet skal testes ved tryk på submit. Men ikke før! ;-)
Avatar billede Slettet bruger
28. marts 2003 - 15:18 #15
Fx:

<script>
function valider(frm) {
  if (frm.email.value == "") {
    alert("Husk at udfylde feltet!");
    frm.email.focus();
    return false;
  }
  return true;
}
</script>

I form-tagget:

<form ... onSubmit="return valider(this);">
Avatar billede bigo Nybegynder
29. marts 2003 - 08:53 #16
takker..
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