Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery-为不工作的输入赋值_Javascript_Jquery - Fatal编程技术网

Javascript jquery-为不工作的输入赋值

Javascript jquery-为不工作的输入赋值,javascript,jquery,Javascript,Jquery,我在表单中有三个输入控件 日期(显示当前日期,但用户可以从日历中选择任何日期) 开始时间(当前时间) 结束时间(开始时间+30分钟) 页面加载 HTML: 在上面的代码中,它显示当前日期、时间,并将30分钟与当前时间相加,但有时在赋值时,开始时间和结束时间字段不显示时间!比如, 当前时间为12.00 AM时,开始时间和结束时间输入字段中不显示任何值 我没有看到代码中有任何错误,但由于我是jquery新手,我需要知道我是否在这里做错了任何事情(可能是在赋值时),或者是否有其他方法可以做到这一点

我在表单中有三个输入控件

  • 日期(显示当前日期,但用户可以从日历中选择任何日期)
  • 开始时间(当前时间)
  • 结束时间(开始时间+30分钟)
    页面加载
  • HTML:

    在上面的代码中,它显示当前日期、时间,并将30分钟与当前时间相加,但有时在赋值时,开始时间和结束时间字段不显示时间!比如,

    • 当前时间为12.00 AM时,开始时间和结束时间输入字段中不显示任何值
    我没有看到代码中有任何错误,但由于我是jquery新手,我需要知道我是否在这里做错了任何事情(可能是在赋值时),或者是否有其他方法可以做到这一点

    注:
    应该注意的是,我使用了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;