简体   繁体   English

如何验证输入时间是在javascript中两个给定时间之间

[英]How to validate entered time is between two given times in javascript

I have to validate the start time and end time whether the entered value in the text box is between the given value. 我必须验证开始时间和结束时间是否在文本框中输入的值是否在给定值之间。 It is working if the start time and end time are on the same day but if the end date is different then the validation fails. 如果开始时间和结束时间在同一天但如果结束日期不同则验证失败。 I have seen many other links on StackOverflow but it is not working. 我在StackOverflow上看到了许多其他链接,但它无法正常工作。

How to check if one DateTime is later than another in javascript 如何在javascript中检查一个DateTime是否晚于另一个

How can I compare two time strings in the format HH:MM:SS? 如何比较HH:MM:SS格式的两个时间字符串?

How to check if one DateTime is later than another in javascript 如何在javascript中检查一个DateTime是否晚于另一个 在此输入图像描述

<html>
<script language="javascript">
    jQuery(document).on('change',".timepicker",function(){
var selectedTime = new Date("November 13, 2018 " + jQuery(this).val());
var startLimit = new Date("November 13, 2018 " + jQuery(this).data('starttime'));
var endLimit = new Date("November 13, 2018 " + jQuery(this).data('endtime'));
var start_time_val = new Date("November 13, 2018 " + $("input[name=start_time]").val());
var end_time_val = new Date("November 13, 2018 " + $("input[name=end_time]").val());
var elementName = jQuery(this).attr('name');
var valid = moment(jQuery(this).val(), "H:mm a", true).isValid();
var time = new Date("November 13, 2018 " + selectedTime);
jQuery(this).next('span.error').text('');
var error_msg = jQuery(this).data('erro_msg');


if(valid){
    if(elementName == 'start_time'){

        if(selectedTime >= startLimit && endLimit > selectedTime){

            console.log("selected Time less than start limit");
        }else{
            console.log("selected Time is less than start limit");
            jQuery(this).next('span.error').text(error_msg);
        }
    var endTimeSelected = jQuery(this).next('input').val();
    }else if(elementName == 'end_time'){


        if(selectedTime >= startLimit && endLimit > selectedTime){
        }else{
            jQuery(this).next('span.error').text(error_msg);
        }
        var endTimeSelected = jQuery(this).next('input').val();
    }else if(elementName == 'end_time'){
        if(selectedTime <= endLimit && selectedTime <= endLimit){

        }
        else{

            jQuery(this).next('span.error').text(error_msg);
        }

        var startTimeSelected = jQuery(this).prev('input.timepicker').val();
}
}else{
    jQuery(this).next('span.error').text(error_msg);
}

});
        </script>

<input type="text" name="start_time" value="6:15 AM" class="form-control timepicker" autocomplete="off" requried="1" data-starttime="6:00 AM" data-endtime="12:00 PM" data-erro_msg="Please select time between 6:00 AM-12:00 PM">

    <input type="text" name="end_time" value="7:15 AM" class="form-control timepicker" autocomplete="off" requried="1" data-starttime="6:00 AM" data-endtime="12:00 PM" data-erro_msg="Please select time between 6:00 AM-12:00 PM">
       </html>

The issue is with parsing. 问题在于解析。 Date.parse() does not read the am/pm addition. Date.parse()不读取am / pm添加。 You could use moment.js or split am/pm off and add 12 hours on pm 您可以使用moment.js或分割上午/下午,并在下午添加12小时

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM