Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.09.2016, 07:24
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Input type="time" + JS +Safari (iPhone)
Приветствую:
Есть HTML кусок формы
<div class="row">
					<div class="col-sm-12">
						Перезвоните мне пожалуйста <span id="when"></span><input type="hidden" id="cday" name="cday" value="">
					</div>
				</div>
				<div class="row">
					<div class="col-sm-6">
						<div class="form-group">
							с&nbsp;<input type="time" id="timestart" name="timestart" class="form-control" required="required" min="" max="22:00" step="1" value="">
						</div>
					</div>
					<div class="col-sm-6">
						<div class="form-group">
							до&nbsp;<input type="time" id="timeend" name="timeend" class="form-control" required="required" min="" max="22:00" step="1" value="">
						</div>
					</div>
				</div>


к нему есть скрипт
<script>
	//какое послезавтра будет число?
	var b = new Date();
		b.setDate(b.getDate()+2);
		atday = b.getDate();
		atmonth = b.getMonth() + 1;
		atyear = b.getFullYear();
		aTomorrowСall = (atday + "." + (atmonth < 10 ? "0" + atmonth : atmonth) + "." + atyear + "г.");
		
	//какое завтра будет число и день недели?
	var a = new Date();
		a.setDate(a.getDate()+1);
		tday = a.getDate();
		tmonth = a.getMonth() + 1;
		tyear = a.getFullYear();
		TomorrowСall = (tday + "." + (tmonth < 10 ? "0" + tmonth : tmonth) + "." + tyear + "г.");
		TomorrowWeekDay = a.getDay();
	//А сегодня какое число и день недели?
	var d = new Date();
		day = d.getDate();
		month = d.getMonth() + 1;
		year = d.getFullYear();
		TodayCall = (day + "." + (month < 10 ? "0" + month : month) + "." + year +"г.");
		TodayWeekDay = d.getDay();
	//Начало и Конец рабочего дня
	var wdstart = 8;
	var wdend = 18;
	var lasthour = wdend - 1;
	//Текущее время
	var totalSec = new Date().getTime() / 1000;
	var hours = parseInt( totalSec / 3600 ) % 24+4;
	var hoursend = hours + 1;
	var minutes = parseInt( totalSec / 60 ) % 60;
	//Начало перида времени звонка
	var tstart = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes);
	//Конец перида времени звонка
	var tend = (hoursend < 10 ? "0" + hoursend : hoursend) + ":" + (minutes < 10 ? "0" + minutes : minutes);
	
	//Если сейчас рабочее время
	if (hours >= wdstart) {
		if (hours < wdend) {
			//Если сегодня воскресение
			if (TodayWeekDay = 0) {
				//Показываем, что пользователь заказывает звонок на завтра
				when.innerHTML = ('завтра ' + TomorrowСall);
				//Устанавливаем дату звонка - завтра
				cday.setAttribute('value', TomorrowСall);
				//Унавливаем значения для начала периода звонка
				timestart.setAttribute('min', '08:00');
				timestart.setAttribute('value', '08:00');
				//Унавливаем значения для конца периода времени звонка
				timeend.setAttribute('min', '09:00');
				timeend.setAttribute('value', '22:00');
			}
			else {
					//А вдруг запрос звонка происходит в последние 10 минуты рабочего времени
					if (hours >= lasthour) {
						if (minutes > 50) {
							//А вдруг это последние рабочие минуты субботы?
							if (TodayWeekDay = 6) {
								//Показываем, что пользователь заказывает звонок на послезавтра
								when.innerHTML = ('завтра ' + аTomorrowСall);
								//Устанавливаем дату звонка - послезавтра
								cday.setAttribute('value', аTomorrowСall);
								//Унавливаем значения для начала периода звонка
								timestart.setAttribute('min', '08:00');
								timestart.setAttribute('value', '08:00');
								//Унавливаем значения для конца периода времени звонка
								timeend.setAttribute('min', '09:00');
								timeend.setAttribute('value', '22:00');
							}
							else {
									//Показываем, что пользователь заказывает звонок на завтра
									when.innerHTML = ('завтра ' + TomorrowСall);
									//Устанавливаем дату звонка - завтра
									cday.setAttribute('value', TomorrowСall);
									//Унавливаем значения для начала периода звонка
									timestart.setAttribute('min', '08:00');
									timestart.setAttribute('value', '08:00');
									//Унавливаем значения для конца периода времени звонка
									timeend.setAttribute('min', '09:00');
									timeend.setAttribute('value', '22:00');	
							}
						}
					}
					else {
						//Устанавливаем дату звонка - сегодня
						cday.setAttribute('value', TodayCall);
						//Унавливаем значения для начала периода звонка
						timestart.setAttribute('min', tstart);
						timestart.setAttribute('value', tstart);
						//Унавливаем значения для конца периода времени звонка
						timeend.setAttribute('min', tend);
						timeend.setAttribute('value', tend);
					}
			}
		}
	}
	
	
	//Если рабочее время еще не началось
	if (hours < wdstart) {
		//Если сегодня воскресение
		if (TodayWeekDay = 0) {
			//Показываем, что пользователь заказывает звонок на завтра
			when.innerHTML = ('завтра ' + TomorrowСall);
			//Устанавливаем дату звонка - завтра
			cday.setAttribute('value', TomorrowСall);
			//Унавливаем значения для начала периода звонка
			timestart.setAttribute('min', '08:00');
			timestart.setAttribute('value', '08:00');
			//Унавливаем значения для конца периода времени звонка
			timeend.setAttribute('min', '09:00');
			timeend.setAttribute('value', '22:00');
		}
		else {
			//Устанавливаем дату звонка - сегодня
			cday.setAttribute('value', TodayCall);
			//Унавливаем значения для начала периода звонка
			timestart.setAttribute('min', '08:00');
			timestart.setAttribute('value', '08:00');
			//Унавливаем значения для конца периода времени звонка
			timeend.setAttribute('min', '09:00');
			timeend.setAttribute('value', '22:00');
		}
	}
	//Если рабочее время уже закончилось
	if (hours >= wdend) {
		//А вдруг сегодня суббота?
		if (TodayWeekDay = 6) {
			//Показываем, что пользователь заказывает звонок на послезавтра
			when.innerHTML = ('завтра ' + аTomorrowСall);
			//Устанавливаем дату звонка - послезавтра
			cday.setAttribute('value', аTomorrowСall);
			//Унавливаем значения для начала периода звонка
			timestart.setAttribute('min', '08:00');
			timestart.setAttribute('value', '08:00');
			//Унавливаем значения для конца периода времени звонка
			timeend.setAttribute('min', '09:00');
			timeend.setAttribute('value', '22:00');
		}
		else {
			//Показываем, что пользователь заказывает звонок на завтра
			when.innerHTML = ('завтра ' + TomorrowСall);
			//Устанавливаем дату звонка - завтра
			cday.setAttribute('value', TomorrowСall);
			//Унавливаем значения для начала периода звонка
			timestart.setAttribute('min', '08:00');
			timestart.setAttribute('value', '08:00');
			//Унавливаем значения для конца периода времени звонка
			timeend.setAttribute('min', '09:00');
			timeend.setAttribute('value', '22:00');
		}
}
</script>

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

Все отлично работает во всех браузерах, кроме Safari на iphone, он игнорит javascript, игнорит атрибуты min и maх. Как можно его победить?

И еще один БАГ с Хромом на Андроиде - скрипт работает, он вроде-как все значения атрибутов устанавливает, но установленное скриптом значение value не отображает (надо обязательно тыкнуться в поле и «подтвердить»).
Может есть знающие люди, подскажите, как это дело исправить?

Последний раз редактировалось dpts, 21.09.2016 в 08:15.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
Можно ли редактировать ф.с iPhone при помощи js? lonkonpetr Общие вопросы Javascript 3 16.03.2013 23:07
Проверка value у input js bartle96 jQuery 2 31.05.2012 09:41
Не работает JS в Google Chrome,IE9, Safari wolfus Opera, Safari и др. 1 05.04.2012 22:01
input и JS Лимонадный Джо Events/DOM/Window 5 13.06.2008 04:05