Comment charger html <select> avec des valeurs lors du chargement de la page à l'aide de javascript en PHP?
Je vais avoir des problème sur la façon de charger le code HTML <select>
avec des valeurs à chaque fois que la page est chargée pour la première fois ou lors de l'actualisation.
Je suis en train d'essayer de créer un date_select avec 3 menus déroulants qui comprend année, le mois et le jour dans le mois-menu ou menu est changé il va automatiquement ajuster le nombre de jours.
Par exemple, lorsque j'ai choisi le mois de Mars, les jours seront 31 ou avril, les journées vont être de 30.
Mon problème est que lorsque la page est chargée pour la première fois le jour-menu est vide. J'ai essayé onload
sur le <select>
mais il ne fonctionne pas. Je suis un débutant en programmation, donc j'ai de la difficulté même de simples exercices de ce genre. S'il vous plaît aider.
date_select.php
<script type="text/javascript" >
function loadDays() {
var year = parseInt(document.getElementById('years').value);
var month = document.getElementById('months').value;
var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if ((year % 4) == 0) days[1] = 29;
var days_select = document.getElementById('days');
days_select.options.length = 0;
for(i in months) {
if (month == months[i]) {
for(var j = 1; j <= days[i]; j++ ) days_select.options[days_select.options.length] = new Option(j, j);
break;
}
}
}
</script>
<span style="display: table; ">
<span style="display: table-cell; ">
<select id="years" onchange="loadDays();">
<?php
for($year = 1900; $year <= 2100; $year++ ) {
if ($year == date('Y')) echo "<option value='$year' selected=''>" . $year . "</option>";
else echo "<option value='$year'>" . $year . "</option>";
}
?>
</select>
</span>
<span style="display: table-cell; ">
<select id="months" onchange="loadDays();">
<?php
$months = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );
foreach($months as $month){
if ($month == date('M')) echo "<option value='$month' selected=''> " . $month . "</option>";
else echo "<option value='$month'> " . $month . "</option>";
}
?>
</select>
</span>
<span style="display: table-cell; ">
<select id="days" onload="loadDays();">
</select>
</span>
</span>
OriginalL'auteur Newbie Coder | 2011-05-04
Vous devez vous connecter pour publier un commentaire.
Essayer de mettre l'attribut onload de la balise body au lieu de la balise select.
OriginalL'auteur grc
Vous devriez envisager d'utiliser jQuery, un puissant et multi-navigateur de la bibliothèque javascript qui essaie de faire de la programmation en javascript plus accessible.
Par exemple, il fournit une fonction qui attend les DOM contenu d'être chargé avant l'insertion de javascript (et c'est mieux que le "onload" de l'événement, car il n'a pas de demande pour les images à charger)
En jquery vous (presque) toujours envelopper votre javascript dans cette fonction
Si vous avez besoin de javascript, vous devriez vraiment vérifier jQuery ou autres cadres
OriginalL'auteur Nicola Peluchetti
Je pense qu'il devrait être suffisant si vous venez de passer l'option javascript de votre bloc en dessous de ceux des travées et de la sélectionne et appeler la fonction juste après sa déclaration.
OriginalL'auteur Martin Lazar