Javascript jquery-为不工作的输入赋值
我在表单中有三个输入控件Javascript jquery-为不工作的输入赋值,javascript,jquery,Javascript,Jquery,我在表单中有三个输入控件 日期(显示当前日期,但用户可以从日历中选择任何日期) 开始时间(当前时间) 结束时间(开始时间+30分钟) 页面加载 HTML: 在上面的代码中,它显示当前日期、时间,并将30分钟与当前时间相加,但有时在赋值时,开始时间和结束时间字段不显示时间!比如, 当前时间为12.00 AM时,开始时间和结束时间输入字段中不显示任何值 我没有看到代码中有任何错误,但由于我是jquery新手,我需要知道我是否在这里做错了任何事情(可能是在赋值时),或者是否有其他方法可以做到这一点
页面加载
- 当前时间为12.00 AM时,开始时间和结束时间输入字段中不显示任何值
应该注意的是,我使用了HTML5输入类型时间控件来输入开始时间和结束时间当您可以简单地使用日期时,不要再考虑这种复杂的“添加30分钟”逻辑,因为它在日期/时间数学方面已经很好了
var d = new Date();
// ...
var thirtyMinutes = 30*60*1000;
var futureDate = new Date(d.getTime() + thirtyMinutes);
var ntime = futureDate.getHours() + ':' + futureDate.getMinutes();
我猜你的问题是,在开始时间增加30分钟后,结束时间已经是第二天了 以此为例 开始时间:23:50 根据你的计算,+30分钟给你 结束时间:24时20分 24.20是输入[type='time'的无效值 编辑:雅各布的答案解决了你有缺陷的算法的问题 编辑2:修改Jacob的答案,这将得到结束日期
var d = new Date(); //get current time.
var thirtyMinutes = 30*60*1000; //30 minutes in milliseconds
var futureDate = new Date(d.getTime() + thirtyMinutes); //current time in milliseconds + 30 minutes in milliseconds.
var endDateHour = futureDate.getHours();
var endDateMinutes = futureDate.getMinutes();
if (endDateMinutes<10) {
endDateMinutes = "0"+endDateMinutes;
}
var endDate = endDateHour + ':' + endDateMinutes;
var d=新日期()//获取当前时间。
第三十分钟的var=30*60*1000//30分钟(毫秒)
var futureDate=新日期(d.getTime()+三十分钟)//以毫秒为单位的当前时间+以毫秒为单位的30分钟。
var endDateHour=futureDate.getHours();
var endDateMinutes=futureDate.getMinutes();
如果(EndDateMinutes)此操作失败,您的控制台中是否有错误?您需要比“有时”更具体。找出这些时间是什么时候。您可以创建一个JSFIDLE来显示您的问题吗?是的,控制台中显示“加载资源失败:net::ERR_CACHE_MISS”我没有得到这个,因为我是编程新手。我缩写为只显示对计算时间的更改。像你说的那样更改代码,当当前时间为12.30 PM时,结束时间没有显示数据,但当当前时间为12.42 PM时,结束时间正确显示为1.12 PM。很抱歉,你能给出一个解决方案吗?是的,我猜是的是问题,但即使是结束时间也是在同一天,例如,如果开始时间是晚上8点30分,结束时间字段中也没有显示值。@jcobI已经测试过一位数的分钟不被接受。例如,12:1不被接受,但12:01是。这是一个例外。另一个例外是小时值>23。我已将解决方案附加到您的问题中answer解决了一位数的异常,代码工作正常,但当前时间为12.00 AM(午夜)时除外。我认为这是因为12.00 AM抛出值0。[link]这有一个javascript解决方案
var d = new Date();
// ...
var thirtyMinutes = 30*60*1000;
var futureDate = new Date(d.getTime() + thirtyMinutes);
var ntime = futureDate.getHours() + ':' + futureDate.getMinutes();
var d = new Date(); //get current time.
var thirtyMinutes = 30*60*1000; //30 minutes in milliseconds
var futureDate = new Date(d.getTime() + thirtyMinutes); //current time in milliseconds + 30 minutes in milliseconds.
var endDateHour = futureDate.getHours();
var endDateMinutes = futureDate.getMinutes();
if (endDateMinutes<10) {
endDateMinutes = "0"+endDateMinutes;
}
var endDate = endDateHour + ':' + endDateMinutes;