Avatar billede compac Seniormester
21. oktober 2004 - 14:41 Der er 9 kommentarer og
1 løsning

Slet tekst i felt ved X i checkbox

Hvordan får jeg slettet teksten i inputfeltet - når der IKKE er markeret nogen af checkbox'ene? Formentlig skal det klares ved en tilføjelse i den sidste funktion??

<TITLE>titel</TITLE>

</HEAD>
<BODY>
<FORM NAME ="form"><font face="Verdana" size="3"><br>
<br>
<br><input type="checkbox" name="box1" value="v1" onclick="if(this.checked)oneOrNoCheckboxGroup(this);funk1()"><br>

<br><input type="checkbox" name="box1" value="v2" onclick="if(this.checked)oneOrNoCheckboxGroup(this);funk2()"><br>

<br><input type="checkbox" name="box1" value="v3" onclick="if(this.checked)oneOrNoCheckboxGroup(this);funk3()"><br>
<input type="text" name="resultat" size="50"><br>
</FORM>
<SCRIPT LANGUAGE = "JAVASCRIPT">

function funk1() {
tekst1 = "en tekst -1";
document.form.resultat.value = tekst1;
}

function funk2() { 
tekst2 = "en tekst- 2"
document.form.resultat.value = tekst2;
}

function funk3() {
tekst3 = "en tekst- 3"
document.form.resultat.value = tekst3;

}
function oneOrNoCheckboxGroup (checkbox) {
  var checkboxGroup = checkbox.form[checkbox.name];
  for (var c = 0; c < checkboxGroup.length; c++)
    if (checkboxGroup[c] != checkbox)
      checkboxGroup[c].checked = false;
    return checkbox.checked;
}
</SCRIPT>
</BODY>
</HTML>
Avatar billede compac Seniormester
21. oktober 2004 - 14:43 #1
Min overskrift er ikke korrekt - jeg mener selvfølgleig at teksten skal slettes når en checkbox en markering af en checkbox fjernes.
Avatar billede roenving Novice
21. oktober 2004 - 14:54 #2
Ud fra det, du havde lavet, så jeg mange optimeringer (og der er sikkert flere !-) og dem har jeg så indbygget:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>titel</title>
<script type="text/javascript">
var txt = ['','en tekst -1','en tekst -2','en tekst -3'];

function funk(n) {
document.form.resultat.value = txt[n];
}

function oneOrNoCheckboxGroup (checkbox) {
  var checkboxGroup = checkbox.form[checkbox.name];
  if(!checkbox.checked)return funk(0);
  for (var c = 0; c < checkboxGroup.length; c++)
    if (checkboxGroup[c] != checkbox)
      checkboxGroup[c].checked = false;
  return funk(+checkbox.value.replace(/.*(\d+)$/,"$1"));
}
</script>

</head>
<body>
<form name ="form"><font face="Verdana" size="3"><br>
<br>
<br><input type="checkbox" name="box1" value="v1" onclick="oneOrNoCheckboxGroup(this);"><br>

<br><input type="checkbox" name="box1" value="v2" onclick="oneOrNoCheckboxGroup(this);"><br>

<br><input type="checkbox" name="box1" value="v3" onclick="oneOrNoCheckboxGroup(this);"><br>
<input type="text" name="resultat" size="50"><br>
</form>
</body>
</html>
Avatar billede compac Seniormester
21. oktober 2004 - 15:21 #3
Utroligt som tingene kan forenkles. Jeg havde i mit eksempel udeladt en del kode i hver function for overskuelighedens skyld (forskellige datoberegninger osv.), så jeg tror at min struktur skal bevares.
Avatar billede roenving Novice
21. oktober 2004 - 15:23 #4
Men beregningerne er vel principielt de samme, bare med forskellige udgangspunkter ?-)

-- for alt andet lige vil det være bedre at differentiere indenfor en funktion end at skrive forskellige funktioner !-)
Avatar billede compac Seniormester
21. oktober 2004 - 16:41 #5
Jeg lægger her det samlede dokument så du kan se hvad jeg mener:

<HTML>
<HEAD>
<TITLE>titel</TITLE>
<script language="javascript">
nu = new Date();
paar = nu.getYear()
</script>
</HEAD>
<BODY>
<FORM NAME ="form"><font face="Verdana" size="3"><br>
<br>
<br><input type="checkbox" name="box1" value="v1" onclick="if(this.checked)oneOrNoCheckboxGroup(this);beregn()"><br>

<br><input type="checkbox" name="box1" value="v2" onclick="if(this.checked)oneOrNoCheckboxGroup(this);paaske(paar)"><br>

<br><input type="checkbox" name="box1" value="v3" onclick="if(this.checked)oneOrNoCheckboxGroup(this);vismorsdag()"><br>
<input type="text" name="resultat" size="50"><br>
</FORM>
<SCRIPT LANGUAGE = "JAVASCRIPT">
function beregn() {
dato = 0;
datostr = 0;
nu = new Date();
aar = nu.getYear();
maaned = 2;
dag = 14;
datostr = (dag+"-"+maaned+"-"+"-"+aar);
dato = datostr;
document.form.resultat.value = dato;
}

var paschal = ["A14","A3","M23","A11","M31","A18","A8","M28","A16","A5","M25","A13","A2","M22","A10","M30","A17","A7","M27"];
dato = 0;
function paaske(aar) {
      rest = aar%19;
      p = paschal[rest];
      d = new Date();
      d.setFullYear(aar);
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      dag = d.getDay();
      d.setDate(d.getDate()+7-dag);
dato = d;
document.form.resultat.value = dato;
}

function vismorsdag() {
var d = new Date();
  d.setDate(1);
  d.setMonth(4);
  if(new Date().getTime()>d.getTime())d.setYear(d.getFullYear()+1);
  var MDag = (d.getDay()==0)?8:15 - d.getDay();
  d.setDate(MDag);
      document.form.resultat.value = d.toLocaleDateString();
}


function oneOrNoCheckboxGroup (checkbox) {
  var checkboxGroup = checkbox.form[checkbox.name];
  for (var c = 0; c < checkboxGroup.length; c++)
    if (checkboxGroup[c] != checkbox)
      checkboxGroup[c].checked = false; 
  return checkbox.checked;
}
</SCRIPT>
</BODY>
</HTML>

PS: datoen for paaske kunne jeg tænke mig blev formatteret som dd-mm-yyyy.
Håber du kan hjælpe.
Avatar billede roenving Novice
21. oktober 2004 - 17:02 #6
F.eks.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Vis datoer</title>
<script type="text/javascript">
function twoDigits(num){
  return (10>num)?"0"+num:""+num;
}
var paschal = ["A14","A3","M23","A11","M31","A18","A8","M28","A16","A5","M25","A13","A2","M22","A10","M30","A17","A7","M27"];

function funk(n) {
  var d = new Date(),txt = "",aar = d.getFullYear();
  switch(n){
    case(1):
      maaned = 2;
      dag = 14;
      txt = twoDigits(dag)+"-"+twoDigits(maaned)+"-"+aar;
      break;

    case(2):
      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      dag = d.getDay();
      d.setDate(d.getDate()+7-dag);
      txt = twoDigits(d.getDate()) + "-" + twoDigits(d.getMonth()+1) + "-" + aar;
      break;

    case(3):
      d.setDate(1);
      d.setMonth(4);
      if(new Date().getTime()>d.getTime())d.setYear(d.getFullYear()+1);
      var MDag = (d.getDay()==0)?8:15 - d.getDay();
      d.setDate(MDag);
      txt = twoDigits(d.getDate()) + "-" + twoDigits(d.getMonth()+1) + "-" + d.getFullYear();
      break;
  }
  document.form1.resultat.value = txt;
}


function oneOrNoCheckboxGroup (checkbox) {
  var checkboxGroup = checkbox.form[checkbox.name];
  if(!checkbox.checked)return funk(0);
  for (var c = 0; c < checkboxGroup.length; c++)
    if (checkboxGroup[c] != checkbox)
      checkboxGroup[c].checked = false;
  return funk(+checkbox.value.replace(/.*(\d+)$/,"$1"));
}
</script>
</head>
<body>
<form name="form1"><font face="Verdana" size="3"><br>
<br>
<br><input type="checkbox" name="box1" value="v1" onclick="oneOrNoCheckboxGroup(this);"><br>

<br><input type="checkbox" name="box1" value="v2" onclick="oneOrNoCheckboxGroup(this);"><br>

<br><input type="checkbox" name="box1" value="v3" onclick="oneOrNoCheckboxGroup(this);"><br>
<input type="text" name="resultat" size="50"><br>
</form>
</body>
</html>
Avatar billede compac Seniormester
21. oktober 2004 - 17:09 #7
Det er helt perfekt. -jeg lærte en masse.
-læg et svar
Avatar billede roenving Novice
21. oktober 2004 - 17:24 #8
-- og så lagde jeg mærke til, at påske altid er indeværende år, skal den måske ligesom morsdag laves til næstkommende ?-)

Velbekomme '-)
Avatar billede compac Seniormester
21. oktober 2004 - 20:44 #9
Det skal ihvertfald være samme¨år - men det må jeg lige undersøge.
Tak for din hjælp
Avatar billede roenving Novice
08. april 2005 - 09:53 #10
-- og 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