Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Christopher Bryan en 10 Agosto 2014, 23:35 pm



Título: AYUDA CON FUNCION javascript
Publicado por: Christopher Bryan en 10 Agosto 2014, 23:35 pm
Buenas, tengo una duda sobre una función en javascript, explico:

1) Tengo un formulario que contiene, entre otros campos, estos 3 (Día, Mes y Año):


Código:
		<label class="FormField">Fecha de nacimiento:</label>
Día:&nbsp;<select name="f9" id="sDay">
<?php for($i=1; $i<=31; $i++) echo('<option value="'.$i.'">'.$i.'</option>'); ?>
</select>
Mes:&nbsp;<select name="f10" onchange="ValidateDate(this.value)">
<option value="1">Enero</option>
<option value="2">Febrero</option>
<option value="3">Marzo</option>
<option value="4">Abril</option>
<option value="5">Mayo</option>
<option value="6">Junio</option>
<option value="7">Julio</option>
<option value="8">Agosto</option>
<option value="9">Septiembre</option>
<option value="10">Octubre</option>
<option value="11">Noviembre</option>
<option value="12">Diciembre</option>
</select>
Año:&nbsp;<select name="f11">
<?php for($i=10; $i<=99; $i++) {$a=idate("Y")-$i;echo('<option value="'.$a.'">'.$a.'</option>');} ?>
</select>

2) Como se pueden dar cuenta, los valores para día y año, los genero con PHP. Entonces lo que quiero es que en el evento OnChange del SELECT que corresponde al mes, me ejecute una funcion para que no coloquen fechas invalidas (como 30 de Febrero, 31 de Noviembre, etc) y la tengo programada asi:

Código:
function ValidateDate(month){
d=document.getElementById("sDay").value;
switch(parseInt(month)){
case 2:
if(parseInt(d)>28) d="28";
break;

case 4:
case 6:
case 9:
case 11:
if(parseInt(d)>30) d="30";
break;
}
}

3) Entonces como ya vieron, si el mes seleccionado no abarca el total de días que selecciono en el SELECT "dia", que le cambie el valor.

Pero no me funciona el código, espero que alguien pueda ayudarme. De antemano, gracias...


Título: Re: AYUDA CON FUNCION javascript
Publicado por: MinusFour en 11 Agosto 2014, 18:32 pm
No funciona porque la variable d no es una referencia a la propiedad value del select sDay.

Vamos:

Código
  1. //sDay.value = 2
  2. var d = document.getElementById(sDay).value;
  3. //d = value
  4. d = 28;
  5. //d = 28, sDay.value = 2
  6. document.getElementById(sDay) = 28;
  7. //sDay.value = 28