Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Не могу поставить текущую дату в тэг Date! (https://javascript.ru/forum/xhtml-html-css/71119-ne-mogu-postavit-tekushhuyu-datu-v-tehg-date.html)

Aleksandr Chirkov 27.10.2017 09:46

Не могу поставить текущую дату в тэг Date!
 
Всем доброе утро!! Захотел использовать штатный календарь для задания даты моего поля формы. Без проблем могу вытащить и узнать value записанное пользователем. Но вот вопрос. У меня этот календарь показывает число заданное мною через value (по умолчанию) а я хочу отображать текущую. Я попытался через JS это сделать но не могу заменить value - свойство innerHTML не работает.

<form>
<input type="date" value="2017-10-25" id="calendarForTasks">
</form>


function showCurrentDate()
{
	var getCurrentDay = new Date();
	var year = getCurrentDay.getFullYear();
	var month = getCurrentDay.getMonth();
	var day = getCurrentDay.getDate();
	var value1 = year + "-" + month + "-" + day ;
	
	var valueOld = document.getElementById("calendarForTasks").value;
	valueOld.innerHTML = value1;
}


Подскажите, что не так или может у тэга Date есть атрибут, который задаёт текущее время по умолчанию? :-?

Nexus 27.10.2017 09:50

Aleksandr Chirkov, у свойства "value" нет свойства "innerHTML".
function showCurrentDate()
{
	var getCurrentDay = new Date();
	var year = getCurrentDay.getFullYear();
	var month = getCurrentDay.getMonth();
	var day = getCurrentDay.getDate();
	var value1 = year + "-" + month + "-" + day ;
	
	document.getElementById("calendarForTasks").value=value1;
}

рони 27.10.2017 09:53

Цитата:

Сообщение от Aleksandr Chirkov
не могу заменить value - свойство innerHTML не работает.

так value и меняйте !!!
строки 9-10;
document.getElementById("calendarForTasks").value = value1

Aleksandr Chirkov 27.10.2017 11:00

Не получается в том то и дело...я специально беру объект date и смотрю формат передачи текущего value он получается такой: 2017-10-25.
делаю переменную идентичной формы допустим: 2017-10-27...и вместо изменения значения, он скидывает на формат типа: дд.мм.гггг...и вот я думаю, что не так.

а вот ещё, после того, как я меняю переменную value

var valueOld = document.getElementById("calendarForTasks").value = value1;
alert(valueOld);

смотрю её алертом и вижу, что значение переменной поменялось на верное.

Nexus 27.10.2017 11:22

Aleksandr Chirkov,
<form>
<input type="date" value="2017-10-25" id="calendarForTasks">
</form>
<script>
function showCurrentDate(){
	var d = new Date(),
      new_value=d.toISOString().slice(0,10);

		document.getElementById("calendarForTasks").value=new_value;
}
showCurrentDate();
</script>

Aleksandr Chirkov 27.10.2017 11:37

Спасибо Nexus, но я по другому решил, только не понятно почему так отрабатывает.

var value1 = year + "-" + (month + 1) + "-" + day ;
    document.getElementById("calendarForTasks").value=value1;


Вот так работает нормально, но это значит, что я не могу поставить туда предыдущий месяц и я не пойму почему так?

Nexus 27.10.2017 11:41

Aleksandr Chirkov, потому что "месяц" должен иметь 2 символа, не 1.
(month<10?'0'+month:month)

KoKr 27.10.2017 17:25

В js я совсем новичек, вот такой вот код получился)
<form>
<input type="date"   id="calendarForTasks">
</form>
<script type="text/javascript">


function showCurrentDate()
{

    var getCurrentDay = new Date();

    var year = getCurrentDay.getFullYear();

    var month = '';
    var month1 = getCurrentDay.getMonth() + 1; 
     if(month1 < 10){
    	month = '0' + month1  ;
    }else{
    	month = month1;
    }

    var day = '';
    if(getCurrentDay.getDate() < 10){
    	day = '0' + getCurrentDay.getDate();
    }
    else{
    	day = getCurrentDay.getDate();
    }

    var value1 = year + "-" + month + "-" + day ;

    value1.toString();
     

    var valueOld = document.getElementById("calendarForTasks");

    valueOld.setAttribute('value', value1);

}
showCurrentDate();

</script>

рони 27.10.2017 17:33

KoKr,
добавьте run
[HTML run]ваш код[/HTML]

KoKr 27.10.2017 17:42

рони,
Спасибо, учту на будущее;) не знал как его вставить.


Часовой пояс GMT +3, время: 13:23.