Нужна помощь в получении вывода функции в качестве значения формы ввода

Поэтому я пытаюсь создать форму, которая будет отправлять дату следующей пятницы в качестве значения. Значение должно быть в форме "ГГГГ-ММ-ДД"

Вот что у меня есть:

<input type="hidden" name="next_charge_scheduled_at" id="s1" value="" />
<script type="text/javascript">
 var elem = document.getElementById("s1");
elem.value = function()
{
var d = new Date();

switch (d.getDay())
{
case 0: d.setDate(d.getDate() + 5);
break;

case 1: d.setDate(d.getDate() + 4);
break;

case 2: d.setDate(d.getDate() + 3);
break;

case 3: d.setDate(d.getDate() + 2);
break;

case 4: d.setDate(d.getDate() + 1);
break;

case 6: d.setDate(d.getDate() + 6);
break;
}

return d;

};
</script>

Тем не менее, это возвращает всю функцию, а не результат, насколько я могу видеть.

Что я делаю неправильно?

Всего 2 ответа


Вам нужно создать функцию, только если мы выполняем функцию, как, например, метод calcFriday calculateFriday() мы получим значение, которое мы установим в поле ввода!

var elem = document.getElementById("s1");
elem.value = calculateFriday();

function calculateFriday() {
  var d = new Date();

  switch (d.getDay()) {
    case 0:
      d.setDate(d.getDate() + 5);
      break;

    case 1:
      d.setDate(d.getDate() + 4);
      break;

    case 2:
      d.setDate(d.getDate() + 3);
      break;

    case 3:
      d.setDate(d.getDate() + 2);
      break;

    case 4:
      d.setDate(d.getDate() + 1);
      break;

    case 5:
      d.setDate(d.getDate() + 7);
      break;

    case 6:
      d.setDate(d.getDate() + 6);
      break;
  }
  return moment(d).format('YYYY-MM-DD');;

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<input type="text" tname="next_charge_scheduled_at" id="s1" value="" />


Вы связали функцию с elem.value. Если вы хотите поместить результат функции в elem.value, сделайте это следующим образом:

<input type="hidden" name="next_charge_scheduled_at" id="s1" value="" />
<script type="text/javascript">
 var elem = document.getElementById("s1");
    elem.value=getDate();

    function getDate()
    {
    var d = new Date();

    switch (d.getDay())
    {
    case 0: d.setDate(d.getDate() + 5);
    break;

    case 1: d.setDate(d.getDate() + 4);
    break;

    case 2: d.setDate(d.getDate() + 3);
    break;

    case 3: d.setDate(d.getDate() + 2);
    break;

    case 4: d.setDate(d.getDate() + 1);
    break;

    case 5: d.setDate(d.getDate() + 7);
    break;

    case 6: d.setDate(d.getDate() + 6);
    break;
    }

    return `${d.getFullYear()}-${(d.getMonth() + 1) }-${d.getDate()}`;

    };

Есть идеи?

10000