2017-07-28 5 views
2

Je suis juste un joueur de passe-temps, et j'ai un peu de mal avec la liste de temps disponible DateTimePicker. Je cherche de l'aide pour comprendre pourquoi les codes ne fonctionnent pas. Je ne construis pas de sites web ou comme ça, je ne fais que pratiquer.PHP variable valeur passer à DatePicker Javascript

de base:

<script> 
 
$('#datetimepicker4').datetimepicker({ 
 
minDate:new Date(), 
 
allowTimes:['10:30','11:30','12:30'] }); 
 
</script>

Ces 3 fois permis énumérés parfaitement.

Ma question est juste un principe: Pourquoi ça ne marche pas comme ça?

exemple seulement:

$time1 = "10:30"; 
$time2 = "11:30"; 
$time3 = "12:30"; 

$list = "'" . $time2 . "'," . $time3 . "'"; 

echo "<script>\n"; 
echo "$('#datetimepicker4').datetimepicker({ minDate:new Date(), allowTimes:[".json_encode($list)."] });"; 
echo "\n</script>"; 

Si je suis imprimer la variable php "liste $", il sera affiché: '11: 30' , '12h30'. Mais dans le js montrant seulement 1 temps autorisé au lieu de 2. En fait, il peut être 10 fois différents, montrant toujours seulement 1.

Je ne vois pas la différence entre les deux façons de la liste.

Si vous pouvez me donner une réponse, j'apprécierai.

Merci.

+0

essayer sans json_encode –

Répondre

2

La raison pour laquelle cela ne s'affiche qu'une fois est que vous imprimez uniquement un paramètre à allowedTimes.

[".json_encode($list)."] où tout est entouré de guillemets. Votre sortie est ["'11:30',12:30'"]. Vous devez donc supprimer les guillemets afin d'avoir plusieurs valeurs.

En outre, ce n'est pas le moyen le plus efficace de le faire. Si vous savez que vous imprimez un tableau, pourquoi ne pas configurer les heures de cette façon?

Exemple:

<?php 
$allowTimes = array(
    '10:30', 
    '11:30', 
    '12:30' 
); 
?> 

<script> 
$('#datetimepicker4').datetimepicker({ minDate:new Date(), allowTimes:<?php echo json_encode($allowTimes) ?> }); 
</script> 
+0

allait dire la même chose. Il est traité comme une chaîne (et une qui manque des apostrophes aux bons endroits, ce qui est un autre problème). L'alternative, une fois la correction de l'apostrophe manquante, pourrait aussi être simplement de faire écho à la chaîne elle-même, comme dans 'echo" ... allowTimes: [". $ List."] ... "' sans l'encapsuler avec encodage_json. –