J'ai actuellement ce code:

      <div class="form-group row">
        <label for="example-date-input" class="col-2 col-form-label">Start Date</label>
        <div class="col-4">
          <input class="form-control" type="date" value="" id="start_date">
        </div>
        <label for="example-date-input" class="col-2 col-form-label">End Date</label>
        <div class="col-4">
          <input class="form-control" type="date" value="" id="end_date">
        </div>
      </div>

Et ce javascript:

        var now = new Date();
        
        var month = now.getMonth() + 1;
        var year = now.getFullYear();
        var day = now.getDate();
        
        var start_date = month + "/1/" + year;
        var end_date = month + "/" + day + "/" + year;
        
        $("#start_date").val(start_date);

Mais pour une raison quelconque, la valeur de #start_date au chargement de la page ne change pas. Il reste l'espace réservé "mm / jj / aaaa"

Quelqu'un peut-il expliquer pourquoi cela ne fonctionnera pas?

FYI: J'utilise Bootstrap 4.5.3 et Jquery 3.5.1.

Vous pouvez voir un JSFIDDLE de ma tentative, avec un extrait d'une partie de mon code ici: https://jsfiddle.net/69tn0q4f/1/

1
Adam John 30 oct. 2020 à 16:25

4 réponses

Meilleure réponse

Mis à jour: citant la réponse de https://stackoverflow.com/a/12347050/1844843

Le contrôle de date en HTML 5 accepte au format Année - mois - jour comme nous l'utilisons en SQL Si le mois est 9, il doit être défini comme 09 et non simplement 9. Donc, cela s'applique également au champ de jour.

Donc, la modification suivante fonctionnera.

var now = new Date();

var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);

var today = now.getFullYear()+"-"+(month)+"-"+(day) ;

$('#start_date').val(today);
0
Rumesh Eranga Hapuarachchi 30 oct. 2020 à 13:44

Vous pouvez essayer de modifier le texte en utilisant

$('#start_date').value(start_date)

Il est nécessaire de changer le format de la date en yyyy-MM-dd

0
Alejandro E. Rendon 30 oct. 2020 à 13:38

Essaye ça:

$(document).ready(function () {
    var now = new Date();

    var month = now.getMonth() + 1;
    var year = now.getFullYear();
    var day = now.getDate();

    $("#end_date").val(year + '-' + month + '-' + day);
    $("#start_date").val(year + '-' + month + '-' + '01');
})

$("#end_date").val(year + '-' + month + '-' + day); dans cette ligne, la valeur de day doit être un nombre à 2 chiffres.

0
Wahid Masud 30 oct. 2020 à 13:47

J'espère avoir bien compris votre question.

var now = new Date();
   
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var year = now.getFullYear();
var day = ("0" + now.getDate()).slice(-2);
   
var start_date = (year) + "-" + (month) + "-" + "01";  
var end_date = (year) + "-" + (month) + "-" + (day);
   
$('#start_date').val(start_date);       
$('#end_date').val(end_date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group row">
        <label for="example-date-input" class="col-2 col-form-label">Start Date</label>
        <div class="col-4">
          <input class="form-control" type="date" id="start_date">
        </div>
        <label for="example-date-input" class="col-2 col-form-label">End Date</label>
        <div class="col-4">
          <input type="date" id="end_date">
        </div>
</div>
0
sergey kuznetsov 30 oct. 2020 à 14:45