Avatar billede BTEngineer Novice
14. januar 2008 - 13:34 Der er 4 kommentarer og
1 løsning

Dynamisk slutdato?

Hej Eksperter.

Jeg er ved at lave noget, hvor brugeren skal angive en startdato for et event - når brugeren har valgt startdatoen, så skal der dynamisk stå en slutdato som er dagen efter.

F.eks:
DROP DOWN: 11-03-2008 AUTOMATISK: (12-03-2008)

Jeg ved der skal bruges lidt javascript.

Tak på forhånd! :-)
Avatar billede roenving Novice
14. januar 2008 - 21:47 #1
Ja, det er korrekt, men det er voldsomt afhængigt af det miljø, du stiller op !-)

Men et lille eksempel:

<script type="text/javascript">
function selectSlut(sel){
  var slutSel = document.getElementById("slutDate");
  if(sel.selectedIndex<sel.length-1 && sel.selectedIndex>0)
    slutSel.selectedIndex = sel.selectedIndex + 1;
}
</script>

<select id="startDate" onchange="selectSlut(this);">
  <option>--Vælg startdato--</option>
  <option value="11-03-2008">11-03-2008</option>
  <option value="12-03-2008">12-03-2008</option>
  <option value="13-03-2008">13-03-2008</option>
  <option value="14-03-2008">14-03-2008</option>
  <option value="15-03-2008">15-03-2008</option>
  <option value="16-03-2008">16-03-2008</option>
  <option value="17-03-2008">17-03-2008</option>
  <option value="18-03-2008">18-03-2008</option>
  <option value="19-03-2008">19-03-2008</option>
  <option value="20-03-2008">20-03-2008</option>
  <option value="21-03-2008">21-03-2008</option>
</select>

<select id="slutDate">
  <option>--Vælg slutdato--</option>
  <option value="11-03-2008">11-03-2008</option>
  <option value="12-03-2008">12-03-2008</option>
  <option value="13-03-2008">13-03-2008</option>
  <option value="14-03-2008">14-03-2008</option>
  <option value="15-03-2008">15-03-2008</option>
  <option value="16-03-2008">16-03-2008</option>
  <option value="17-03-2008">17-03-2008</option>
  <option value="18-03-2008">18-03-2008</option>
  <option value="19-03-2008">19-03-2008</option>
  <option value="20-03-2008">20-03-2008</option>
  <option value="21-03-2008">21-03-2008</option>
</select>
Avatar billede BTEngineer Novice
16. januar 2008 - 11:44 #2
Ja det virker jo.
Men altså, min drop down er lavet således:

<select name="day">
<?
for($i=1; $i<32; $i++) {
echo"<option value='$i'>". $i ."</option>";
}
?>
</select>
       
<select name="month">       
<option value="1">Januar</option>
<option value="2">Februar</option>
<option value="3">Marts</option>
<option value="4">April</option>
<option value="5">Maj</option>
<option value="6">Juni</option>
<option value="7">Juli</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
       
<select size="1" name="year">
<?
for($i = (date('Y')-2);
$i <= (date('Y')-0); $i++) {
    echo"<option value='$i'>". $i ."</option>";
}
?> 
</select>

Kan man ikke lave "slutDate" sådan den tilpasser sig efter det?
Avatar billede roenving Novice
17. januar 2008 - 00:40 #3
-- så skal vi jo ud i at validere om næste dag er i næste måned eller år, men selvfølgelig kan det lade sig gøre:

<form ...>
Startdato<br>
<select name="day" id="day">
<?
for($i=1; $i<32; $i++) {
echo"<option value='$i'>". $i ."</option>";
}
?>
</select>
       
<select name="month" id="month">
<option value="1">Januar</option>
<option value="2">Februar</option>
<option value="3">Marts</option>
<option value="4">April</option>
<option value="5">Maj</option>
<option value="6">Juni</option>
<option value="7">Juli</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
       
<select size="1" name="year" id="year" onchange="chooseEndDate();">
<option>--Vælg år--</option>
<?
for($i = (date('Y')-2);$i <= (date('Y')-0); $i++) {
    echo"<option value='$i'>". $i ."</option>";
}
?> 
</select>
<br><br>Slutdato:<br>
<select name="endday" id="endday">
<?
for($i=1; $i<32; $i++) {
echo"<option value='$i'>". $i ."</option>";
}
?>
</select>
       
<select name="endmonth" id="endmonth">
<option value="1">Januar</option>
<option value="2">Februar</option>
<option value="3">Marts</option>
<option value="4">April</option>
<option value="5">Maj</option>
<option value="6">Juni</option>
<option value="7">Juli</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
       
<select size="1" name="endyear" id="endyear">
<?
for($i = (date('Y')-2);
$i <= (date('Y')-0); $i++) {
    echo"<option value='$i'>". $i ."</option>";
}
?> 
</select>

</form>

<script type="text/javascript">
function chooseEndDate(){
  var d = document.getElementById("day");
  var m = document.getElementById("month");
  var y = document.getElementById("year");
  var dato = new Date(y.value,m.value-1,d.value);
  if(dato.getFullYear() != +y.value || dato.getMonth()+1 != +m.value || dato.getDate() != d.value){
    alert("Ugyldig startdato");
    y.selectedIndex = 0;
    d.focus();
    return false;
  }
  dato.setDate(+d.value+1);
  var eD = document.getElementById("endday");
  var eM = document.getElementById("endmonth");
  var eY = document.getElementById("endyear");
  eD.selectedIndex = dato.getDate()-1;
  eM.selectedIndex = dato.getMonth();
  eY.selectedIndex = y.selectedIndex - (dato.getYear() == +y.value ? 1 : 0);
}
</script>
Avatar billede BTEngineer Novice
03. april 2008 - 16:46 #4
fik det aldrig til at virke.
slut
Avatar billede roenving Novice
03. april 2008 - 17:09 #5
Ovenstående virkede da fint nok ?-)
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