jQuery根据下拉列表的值和文本值(timepicker)设置文本值

我想根据选择菜单的值和另一个时间戳文本值在文本字段(timepicker)中设置时间。

想法是不同的约会类型具有不同的约会长度,并且基于约会类型和开始时间,我想设置约会结束时间。

  AHA  FU  Screening       

我知道如何在C#中执行此操作,但我希望使用jQuery。 我不知道如何处理2个条件。 我的jQuery技能不是很强。 这是我到目前为止所拥有的。

 $(function () { var ApptPurpose = $('#ApptPurpose').val(); var ApptStartTime = $('#ApptStartTime'); var ApptEndTime = $('#ApptEndTime'); //when appt purpose changes $("#ApptPurpose").change(function () { // set end time }); // or when start time changes $("#ApptStartTime").change(function () { // set end time }); }); 

在此先感谢您的帮助!

这是我到目前为止所尝试的。 我认为我没有正确地进行时间计算。

 $(function () { var ApptPurpose = $('#ApptPurpose').val(); var ApptStartTime = $('#ApptStartTime'); var ApptEndTime = $('#ApptEndTime'); if (ApptPurpose == "FU") { var ApptLength = 30; } else if (ApptPurpose == "Screening") { var ApptLength = 30; } else { var ApptLength = 60; } //when appt purpose changes $("#ApptPurpose").change(function () { // set end time var StartTime = $('#ApptStartTime').val().split(/:/), ApptLengthTime = ApptLength.split(/:/); timeDiff(StartTime[0] * 3600 + StartTime[1] * 60, ApptLengthTime[0] * 3600 + ApptLengthTime[1] * 60, $('#ApptEndTime')); }); // or when start time changes $("#ApptStartTime").change(function () { // set end time }); 

});

我不确定你用timeDiff计算你想要完成什么,但我认为你过度思考这个问题。

如果您将持续时间添加到分钟并检查总和是否等于或大于60,您只需添加一小时并从分钟的总和中减去60即可获得适当的时间。 如果总和小于60,您所要做的就是将持续时间添加到分钟。

 function setTime() { var ApptPurpose = $('#ApptPurpose').val(), ApptStartTime = $('#ApptStartTime').val(), ApptEndTime = $('#ApptEndTime'), ApptPeriod = ApptStartTime.slice(-2), // Grab the last two characters (am or pm) ApptLength = 0; // Only proceed if #ApptStartTime isn't empty if (ApptStartTime.length) { var ApptSplit = ApptStartTime.split(/:/), ApptStartHour = parseInt(ApptSplit[0]), // Convert the hour string to an integer ApptStartMin = parseInt(ApptSplit[1]); // Convert the minute string to an integer if (ApptPurpose == "FU" || ApptPurpose == "Screening") { ApptLength = 30; } else { ApptLength = 60; } // Add the duration to the minutes. If it's equal to or more than 60.. if (ApptStartMin + ApptLength >= 60) { ++ApptStartHour; // Increment the hour by 1 // Fix the hour if it spills over 12 and change the AM/PM to match if (ApptStartHour >= 12) { ApptStartHour = ApptStartHour === 13 ? 1 : ApptStartHour; ApptPeriod = ApptPeriod === 'pm' ? 'am' : 'pm'; } ApptStartMin = ApptStartMin + ApptLength - 60; // Subtract 60 from the sum // Make sure we always have two digits (eg '00' instead of '0') ApptStartMin = ("0" + ApptStartMin).slice(-2); // If it's less than 60... } else { ApptStartMin = ApptStartMin + ApptLength; // Add the duration to the minutes } // Rebuild the time string and plop it into #ApptEndTime $('#ApptEndTime').val(ApptStartHour + ':' + ApptStartMin + ApptPeriod); } } $('.Time').timepicker({ 'scrollDefault': 'now' }); // When #ApptPurpose changes $("#ApptPurpose").change(function () { setTime(); }); // or when #ApptStartTime changes $("#ApptStartTime").change(function () { setTime(); }); 

编辑:现在我们知道你正在使用哪个timepicker插件,我已经更新了我的AM / PM帐户的答案,并防止它吐出错误的时间,如“13:01 PM”。

更新小提琴: http : //jsfiddle.net/uLgvy7qn/10/