Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2018, 23:23
Интересующийся
Отправить личное сообщение для xlebosolniy Посмотреть профиль Найти все сообщения от xlebosolniy
 
Регистрация: 27.01.2018
Сообщений: 29

Вывод даты и времени
Делаю выбор даты и времени, вот так идет выбор даты с временем:
<input type="datetime-local" required>


а вот так вывожу текущую дату и время:
<script>
$(document).ready(function(){
    $('input[type=datetime-local]').val(new Date().toJSON().slice(0,19));
});
</script>

в итоге выглядит формат так: дата-месяц-год час:минута:секунда

Получается, что при таком выводе какую бы я дату или время (час и минута) не поставил, мне выдает ошибку, что ближайшее допустимое значение та дата и время, которое установлено или та дата и время, которое установлено, но только +1 к минуте, но если установить секунды на 0, то форма проходит при любой дате и времени.

если здесь slice(0,19)); 19 изменить на 16, то формат такой: дата-месяц-год час:минута, как мне и нужно, но только тогда какую бы дату и время я не поставил форма проходит.

Возможно ли этим решением сделать чтобы форма проходила при выборе любой даты или времени, но только если она не меньше текущей, проверив например через атрибут max или все гораздо сложнее?)
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2018, 23:34
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

для форматирования лучше использовать

https://developer.mozilla.org/ru/doc...toLocaleString

https://developer.mozilla.org/ru/doc...DateTimeFormat

проверять лучше сравнивая примитивы

<input type="date" id="date"> <button>отправить</button>
	<script>
document.querySelector('button').onclick=e=> alert(new Date(date.value) > Date.now());
	</script>
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2018, 11:46
Интересующийся
Отправить личное сообщение для xlebosolniy Посмотреть профиль Найти все сообщения от xlebosolniy
 
Регистрация: 27.01.2018
Сообщений: 29

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

<input type="datetime-local" name="date" max ="datetime" required>

  <script>
  var d = new Date();
  var elem = document.getElementById("datetime"); 
  elem.value = d.toISOString().slice(0,16);</script>


почему вот этот способ не работает? атрибут "max" как я понимаю не дает поставить дату меньше заявленной, если вместо "max" написать "id", то выставляется текущая дата, а в "max" это не определяется почему-то
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2018, 12:57
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от xlebosolniy
var elem = document.getElementById("datetime");
- нет у вас такого id. Вообще никакого нет.
Сообщение от xlebosolniy
атрибут "max" как я понимаю не дает поставить дату меньше заявленной
Наоборот - нельзя больше.
Сообщение от xlebosolniy
в "max" это не определяется почему-то
В max или min должно стоять значение в соответствующем формате.

Вот пример с input type="date" (ограничение ввода с type="datetime-local" мне не удалось сделать)
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <title>Тег input, атрибут max</title>
 </head>
 <body> 

   <input type="date" id="date" min ="2018-08-01" max ="2018-08-10" required>
  
<script>
  var d = new Date();
  var elem = document.getElementById("date"); 
  elem.value = d.toISOString().slice(0,10);
</script>
 </body>
</html>

Пример работает в Хроме и Опере
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2018, 13:03
Интересующийся
Отправить личное сообщение для xlebosolniy Посмотреть профиль Найти все сообщения от xlebosolniy
 
Регистрация: 27.01.2018
Сообщений: 29

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <title>Тег input, атрибут max</title>
 </head>
 <body> 
<form>
   <input type="datetime-local" id="date" min ="2018-08-01T00:00" required>
   <input type="submit">
</form>
<script>
  var d = new Date();
  var elem = document.getElementById("date"); 
  elem.value = d.toISOString().slice(0,16);
</script>
 </body>
</html>


вот так работает, нельзя задать дату меньше 01-08-2018, а если текущую дату и время сконвертировать в такой формат: год-месяц-деньTчас:мин и вставить в атрибут "min" будет запрещать отправлять форму если дата меньше текущей?

Последний раз редактировалось xlebosolniy, 03.08.2018 в 13:07.
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2018, 13:20
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

xlebosolniy,
Сообщение от xlebosolniy
вот так работает
У меня в вашем примере спокойно задается любой другой месяц. Ограничение года работает коряво.
Проверка срабатывает только при отправке

Насчет установки min
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <title>Тег input, атрибут max</title>
 </head>
 <body> 
<form>
   <input type="datetime-local" id="date" min ="2018-08-01"  required>
   <input type="submit">
</form>  
<script>

  var elem = document.getElementById("date");
  var tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
  var d = (new Date(Date.now() - tzoffset)).toISOString().slice(0,16);
  elem.value = d;
  elem.setAttribute("min",d);
  d = (new Date(Date.now() + 10*24*60*60*1000)).toISOString().slice(0,16);
  elem.setAttribute("max",d);
</script>
 </body>
</html>


PS: Если указать min и max, то проверка работает нормально - число вне диапазона невозможно ввести

Последний раз редактировалось Dilettante_Pro, 03.08.2018 в 16:33.
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2018, 13:36
Интересующийся
Отправить личное сообщение для xlebosolniy Посмотреть профиль Найти все сообщения от xlebosolniy
 
Регистрация: 27.01.2018
Сообщений: 29

Да, все верно) Проверка срабатывает при отправке, мне и так нормально будет, не обязательно в ходе установки даты) Спасибо за помощь) и еще такой вопрос, как время там отображается, откуда оно берется? У меня по местному 17, на компе стоит МСК - 13, а на страничке отображается 10 часов)
Ответить с цитированием
  #8 (permalink)  
Старый 03.08.2018, 14:13
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

xlebosolniy,
toISOString() - Временная зона — всегда UTC, на что указывает суффикс Z в выводе.

Изменил пример в Пост#6 - добавил корректировку на местную зону клиента

Последний раз редактировалось Dilettante_Pro, 03.08.2018 в 14:26.
Ответить с цитированием
  #9 (permalink)  
Старый 04.08.2018, 22:51
Интересующийся
Отправить личное сообщение для xlebosolniy Посмотреть профиль Найти все сообщения от xlebosolniy
 
Регистрация: 27.01.2018
Сообщений: 29

спасибо)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Каким образом уменьшить размер поля ввода даты и времени bootstrap-datetime? drno-reg Элементы интерфейса 0 12.09.2016 16:11
Компонент для редактирования даты и времени MishaUA Элементы интерфейса 3 02.04.2016 16:55
Вывод серверного времени на сайте McCloud Элементы интерфейса 7 09.09.2015 18:38
Freelance. Нужен календарь на Javascript для подстановки в <input /> даты и времени. DiYanka Работа 1 14.06.2014 02:03
вывод времени php + javascript TTongorovortoto Ваши сайты и скрипты 2 29.10.2011 00:11