Avatar billede ravnborg Nybegynder
18. april 2005 - 20:47 Der er 9 kommentarer og
1 løsning

Kun 2 ud af 4 formfelter må udfyldes.

Jeg er ved at lave en lille formel regnemaskine.

Jeg har lavet 4 formfelter, så nu mangler jeg et javascript der gør, at når der er skrevet i 2 af formfelterne bliver de andre 2 låste, så man ikke kan skrives i dem.

Det skal være valgfrit hvilke 2 formfelter man udfylder.

Jeg håber at det kan lade sig gøre.

vh
Ravnborg
Avatar billede thesurfer Nybegynder
18. april 2005 - 22:02 #1
Hvad hedder de fire felter (name="et eller andet her") ?
Avatar billede roenving Novice
19. april 2005 - 05:59 #2
-- og/eller har du andet i formen ?-)

En metode kunne være denne:

<script type="text/javascript">
function chDisable(elm){
  var e = elm.form.elements,num = 0;
  for(i=0;e.length>i;i++){
    num += (e[i].type=='text'&&e[i].value!=e[i].defaultValue)?1:0;
  }
  for(i=0;e.length>i;i++){
    e[i].disabled = (num >= 2&&e[i].type=='text'&&e[i].value==e[i].defaultValue)?true:false;
  }
}
</script>
<form>
<input type="text" onblur="chDisable(this);"><br>
<input type="text" onblur="chDisable(this);"><br>
<input type="text" onblur="chDisable(this);"><br>
<input type="text" onblur="chDisable(this);"><br>
<input type="submit">
</form>
Avatar billede ravnborg Nybegynder
21. april 2005 - 14:14 #3
Det ser ud til at virke.
Ud over at disable formfeltet kan så ikke også få den til at skifte bagrundsfarve til #DDC3A5 ?

vh
Ravnborg
Avatar billede ravnborg Nybegynder
21. april 2005 - 14:30 #4
Der var jeg lidt for hurtig!
Jeg kan ikke helt få det til at virke når jeg sætter det ind i min form.

Neden for er kildekoden til hvordan jeg gerne vil have min form til at se ud + javascriptet.

<script type="text/javascript">
function chDisable(elm){
  var e = elm.form.elements,num = 0;
  for(i=0;e.length>i;i++){
    num += (e[i].type=='text'&&e[i].value!=e[i].defaultValue)?1:0;
  }
  for(i=0;e.length>i;i++){
    e[i].disabled = (num >= 2&&e[i].type=='text'&&e[i].value==e[i].defaultValue)?true:false;
  }
}
</script>

<form method="post" action="fk_ohms_lov.asp?status=udregn">

<input type="text" name="U" size="30" onblur="chDisable(this);><br>
<input type="text" name="I" size="30" onblur="chDisable(this);><br>
<input type="text" name="R" size="30" onblur="chDisable(this);><br>
<input type="text" name="P" size="30" onblur="chDisable(this);><br>

<input type="submit" value="Udregn">
</form>
Avatar billede roenving Novice
22. april 2005 - 11:41 #5
Jeg ved ikke hvor de gåseøjne var blevet af, men det er altid katastrofalt at overse den slags !-)

-- og så kom jeg til at tænke på en lille brugervenligheds-tilretning:

<script type="text/javascript">
function chDisable(elm){
  var e = elm.form.elements,num = 0;
  for(i=0;e.length>i;i++){
    num += (e[i].type=='text'&&e[i].value!=e[i].defaultValue)?1:0;
  }
  for(i=0;e.length>i;i++){
    e[i].disabled = (num >= 2&&e[i].type=='text'&&e[i].value==e[i].defaultValue)?true:false;
    e[i].style.backgroundColor = (num >= 2&&e[i].type=='text'&&e[i].value==e[i].defaultValue)?"#ddc3a5":"#fff";
  }
}
</script>

<form method="post" action="fk_ohms_lov.asp?status=udregn">

<input type="text" name="U" size="30" onkeyup="chDisable(this);"><br>
<input type="text" name="I" size="30" onkeyup="chDisable(this);"><br>
<input type="text" name="R" size="30" onkeyup="chDisable(this);"><br>
<input type="text" name="P" size="30" onkeyup="chDisable(this);"><br>

<input type="submit" value="Udregn">
</form>
Avatar billede roenving Novice
22. april 2005 - 11:43 #6
-- og så er teksten på din submit 'Beregn', hvilket får mig til at tænke på, at du vil lave en beregning serverside, kunne man ikke ligesågodt undlade at bruge serverens kræfter og så lave den beregning clientside ?-)
Avatar billede ravnborg Nybegynder
22. april 2005 - 17:12 #7
Så virker det  (ups)  ;-)

Det vil uden tvivl være mere smart, at lave en clientside til beregningen, men jeg fatter ikke en meter af javascript :-( så jeg bruger asp som jeg kender.

Jeg må på et eller andet tidspunkt, have købt en bog om javascript, så jeg kan komme i gang.

vh
Ravnborg
Avatar billede ravnborg Nybegynder
22. april 2005 - 17:12 #8
ps. opret lige et svar.
Avatar billede roenving Novice
22. april 2005 - 17:24 #9
Tjah, så kan man jo bruge javascripts eval-funktion, f.eks.

<script type="text/javascript">
function udregn(f){
  f.resultat.value = eval(f.beregning.value);
}
</script>

<form>
Skriv dit regnestykke i tekstboxen, f.eks 3*(4+2) ...<br>
<input type="text" value="3*4+2" name="beregning" size="75" style="height:25px;"><br>
Bemærk, at du umiddelbart kun kan bruge de simple regnearter, ellers kan javascript-notation bruges: Math.sqrt(64)<br>Math.sqrt(64)
<button onclick="udregn(this.form);return false;">Beregn</button><br>
<input type="text" name="resultat" readonly>
</form>

Velbekomme '-)
Avatar billede roenving Novice
24. april 2005 - 11:30 #10
Tak for point ;~}
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