我正在努力增加时间。我没有使用Date对象,也不想使用。
假设我从下面选择4小时下拉: -
<select class="form-control" id="hr-sel" name="hour" required>
<option value="" selected>Decide Hour</option>
<option value="4">4 | 550</option>
<option value="6">6 | 750</option>
<option value="9">9 | 1000</option>
<option value="12">12 | 1200</option>
</select>
从输入类型日期选择下面的3:00。
<input class="form-control" placeholder="Pick Time" type="text" id="pick_time" name="pick" onfocus="(this.type='time')" onfocusout="(this.type='text')"; onchange="make_call();" onblur="setDropTime(hr,this.value);" required>
我希望下面的表单在7:00之前自动更新。
<input class="form-control" id="drop_time" name="drop" placeholder="Drop Time" type="text" onfocus="(this.type='time')" onfocusout="(this.type='text')"; required>
但它合并了两个值。比如4小时和3点,我就43。
以下是我试过的JS功能。请帮助我。
function setDropTime(hours, pick_time) {
var hours = document.forms["book"]["hr-sel"].value;
sum = hours + pick_time;
return sum;
}
请帮帮我。
答案 0 :(得分:0)
首先,我们需要解析显示的项目。 如果我们在几分钟内完成数学计算,那么我们最容易接受。
为了保持概述,而不是重复自己,创建一个可以将时间字符串解析为几分钟的函数
function parseTimeToMinutes(timeValue)
{
//we split the input on the ':' symbol, so we get an arrray
//with the hours and minutes (still as strings)
var separated_values = timeValue.split(':');
var num_hours = parseInt(separated_values[0]);
var num_minutes = parseInt(separated_values[1]);
//figure out the total number of minutes so we can do our math
var sum_minutes = num_minutes + (num_hours * 60);
return sum_minutes;
}
我们还需要一个函数来从我们的分钟数回溯 到一个字符串。
function formatAsTime(numericValue)
{
var restingMinutes = numericValue % 60;
var hours = Math.floor(numericValue / 60);
return hours + ":" + ("0" + restingMinutes).slice(-2);
}
然后你可以这样做
//please note : your code looks very confusing at this point,
//i'm not entirely sure this is how your form works.
//so your mileage may vary. use this as a guiding example :
function setDropTime() {
var originalTime = parseTimeToMinutes(document.getElementById('Pick Time').value);
var timeToAdd = parseTimeToMinutes(document.getElementById('drop_time').value));
var minutesTotal = originalTime + timeToAdd;
return formatAsTime(minutesTotal);
}