У меня есть PDF-форма, которую нужно заполнить либо в электронном виде, либо с помощью старой доброй ручки. Таким образом, он включает в себя вычисления времени с помощью «Time In» и «Time Out». Для упрощения форма включает варианты выбора соответственно «до полудня» или «после полудня». Видеть образец ввода формы
Итак, я думаю, что придумал отличный способ, при котором при электронном использовании я могу позволить пользователю вводить время в формате «h: MM» и объединять выбор «am» или «pm», помещая результат в скрытый поле с форматом "h: MM tt" и выполнение моего расчета времени соответственно. Результат в этом новом скрытом поле отлично работает во все времена, кроме «12: xx». Когда вы выбираете «pm», результат concat становится «0:00 am», а если вы выбираете «am», результатом становится «12:00 pm». Я не могу понять, как с этим бороться. Вот код, который я использую для создания результата в скрытом поле:
//format for inputted time
var TimeFormat = "h:MM";
// field names
var str1Field = "TimeIn"
var str2Field = "TimeInTT"
// get field values
var str1 = this.getField(str1Field).value;
var str2 = this.getField(str2Field).value;
// concat strings if there is data
if (str1 != "" && str2 != ""){
var res = (TimeFormat, str1) + " " + str2;
event.value = res;
}
«TimeIn» - это поле времени «h: MM», а «TimeIn TT» - это «am» или «pm». Любая помощь с этим приветствуется. Может есть способ лучше сделать? Спасибо.
(TimeFormat, str1) + " " + str2 эквивалентен просто str1 + " " + str2 - см. оператор запятойЯ пробовал формат чч: ММ, он просто показывает начальный ноль, но не решает проблему.
TimeFormat был просто попыткой решить проблему, я согласен, что это не нужно. Просто хватаюсь за соломинку.
В моем исследовании кажется, что JavaScript автоматически обрабатывает 12:00 как PM, а чтобы получить полночь, вы должны использовать 0:00 AM. Это будет очень запутать моих пользователей.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я нашел решение своей проблемы. Напомним, проблема заключалась в том, что я пытался объединить поле, отформатированное как «h: MM», с помощью радиокнопки, предоставляющей либо «am», либо «pm», и вывод результата в поле, отформатированное как «h: MM tt». ", указанный выше JavaScript будет работать все время, кроме полудня (12:00) и полуночи. (12:00 утра). После нескольких часов попыток сочетания разных вещей, используя
event.value = res.replace("12:00", "0:00");
дал мне желаемый результат. Опять же, это было проблемой только при вычислении поля, отформатированного как «h: MM tt». Если бы это было просто текстовое поле, проблем не было бы. Однако мне нужно, чтобы это было временное поле для дополнительных расчетов времени. Итак, готовый скрипт после очистки выглядит так:
// field names
var str1Field = "Day1Pd1TimeIn" //Text Field
var str2Field = "Day1Pd1TimeInPeriod" //Radio Button
// get field values
var str1 = this.getField(str1Field).value;
var str2 = this.getField(str2Field).value;
// concat strings if there is data
if (str1 != "" && str2 != "Off")
{
var res = str1 + " " + str2;
event.value = res.replace("12:00", "0:00");
}
Может быть, это кому-то поможет в будущем.
это должен быть
hh:MM??