webForumDet fria alternativet

Tidsskillnad i inputfält?

4 svar · 271 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 058 inlägg
#1

Jag har fyra selectlister där två är fråntid och två är tilltid samt ett textfält för timmar och ett för minuter. Går det på något sätt få tidskillnaden i de undre textfälten när man sätter in från/till-tiden i selecten?

Från: 
<select name="ftidtim">
 <option>16</option>
 <option>17</option>
 <option>18</option>
 <option>19</option>
 <option>20</option>
</select>
<select name="ftidmin">
  <option>10</option>
  <option>20</option>
  <option>30</option>
  <option>40</option>
  <option>50</option>
</select>
Till: 
<select name="ttidtim">
 <option>16</option>
 <option>17</option>
 <option>18</option>
 <option>19</option>
 <option>20</option>
</select>
<select name="ttidmin">
 <option>10</option>
 <option>20</option>
 <option>30</option>
 <option>40</option>
 <option>50</option>
</select><br>
Tim: 
<input type="text" name="difftim" size="4">
Min: 
<input type="text" name="diffmin" size="4">
JojoxxMedlem sedan juni 20004 306 inlägg
#2
<script language="JavaScript" type="text/javascript">
function gnublekx(obj){
	var dif=new Date(2000,0,1,obj.ttidtim[obj.ttidtim.selectedIndex].text,obj.ttidmin[obj.ttidmin.selectedIndex].text).getTime()-new Date(2000,0,1,obj.ftidtim[obj.ftidtim.selectedIndex].text,obj.ftidmin[obj.ftidmin.selectedIndex].text).getTime();
	if(dif<0){ alert('Du... "Till" måste vara senare än "Från".'); return false; }
	obj.difftim.value=Math.floor(dif/3600000);
	obj.diffmin.value=Math.floor((dif-(Math.floor(dif/3600000)*3600000))/60000);
	
}
</script>

<form>
Från: 
<select name="ftidtim" onChange="gnublekx(this.form);">
 <option>16</option>
 <option>17</option>
 <option>18</option>
 <option>19</option>
 <option>20</option>
</select>
<select name="ftidmin" onChange="gnublekx(this.form);">
  <option>10</option>
  <option>20</option>
  <option>30</option>
  <option>40</option>
  <option>50</option>
</select>
Till: 
<select name="ttidtim" onChange="gnublekx(this.form);">
 <option>16</option>
 <option>17</option>
 <option>18</option>
 <option>19</option>
 <option>20</option>
</select>
<select name="ttidmin" onChange="gnublekx(this.form);">
 <option>10</option>
 <option>20</option>
 <option>30</option>
 <option>40</option>
 <option>50</option>
</select><br>
Tim: 
<input type="text" name="difftim" size="4" value="0">
Min: 
<input type="text" name="diffmin" size="4" value="0">
</form>
Jesper TMedlem sedan nov. 20017 058 inlägg
#3

Ha, ha. Du är en pärla!

Jesper TMedlem sedan nov. 20017 058 inlägg
#4

Ps. Om det skulle ligga en tidsskillnad som default, går det då att köra:
<body onLoad="gnublekx(this.form);">
...nej det funkar inte ttidtim är null eller ...

JojoxxMedlem sedan juni 20004 306 inlägg
#5

När du använder this från ett formulärs-element syftar det på formulärsobjektet, från <body> syftar det antagligen på document eller window (har inte testat), du får alltså använda;

<body onLoad="gnublekx(document.formulärsnamn);">

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb