JQuery时间选择器基于会议长度的结束时间



我正试图根据我可以选择的会议长度来获取结束时间下拉值。所以我的代码是这样的:

<tr>
    <th>Start:</th>
    <td><input type="text" id="start" name="start"/></td>
</tr>
<tr>
    <th>Length of meeting</th>
    <td>
       <select name="meeting" id="meeting" onClick="interval()">
          <option value="">--Select length--</option>
       </select>
    </td>
</tr>
<tr>
    <th>End:</th>
    <td><input type="text" id="end" name="end"></td>
</tr>
<script>
$(function() { 
    $('#start').timepicker({
       'minTime':'8:00 AM',
       'maxTime':'9:00 PM'
    });
    $('#end').timepicker({
       'minTime':'8:00 AM',
       'maxTime':'9:00 PM',
       'step':???(how to pass my value from meeting dropdown here?)
     });
   });
   function interval(){
    var meeting = $('#meeting').val();
    if(meeting == ''){
        $('#meeting').empty();
        $('#meeting').append('<option value="">--Select length--</option>');
        for(var i=5; i <= 60; i+=5){
            $('#meeting').append('<option value="'+i+'">'+i+'   min'+'</option>');
        }   
    }
}
</script>

所以我可以选择开始时间,然后我可以选择动态创建的会议的长度,然后我应该得到我的结束时间。我的会议间隔为5到60分钟。因此,如果我选择上午8点开始,会议时间为15分钟,我应该以15分钟为间隔获得结束时间。因此,我在结束下拉列表中的第一个值将是上午8:15,然后是上午8:30,依此类推。目前,我可以在结束时间选择器"步骤"中硬编码mt值:15。我需要的是,我想通过我的会议长度值,这样可以增加我的结束时间。如果有人能帮忙,我将不胜感激。提前谢谢。

使用option:selected查找当前选项的值:

$('#end').timepicker({
       'minTime':'8:00 AM',
       'maxTime':'9:00 PM',
       'step':$('#meeting').find('option:selected').val()
     });

[编辑]

事实上,有很多事情不起作用,我已经创建了一个jsfiddle

我更改了使用以编程方式进行的事件绑定

$('#meeting').bind('change', function () {
     setEndTime();
  });

然后像这样定义setEndTime:

function setEndTime() {
     var meetingLength = parseInt($('#meeting').find('option:selected').val() || 0),
             selectedTime = $('#start').timepicker('getTime');
      selectedTime.setMinutes(selectedTime.getMinutes() + parseInt(meetingLength, 10), 0);
        $('#end').timepicker('setTime', selectedTime);
  }

然后将#meeting下拉列表的初始化更改为第一件事:

for (var i = 5; i <= 60; i += 5) {
    $('#meeting').append('<option value="' + i + '">' + i + '   min' + '</option>');
  }

我还将步骤设置为固定值5,并在$("#start")上添加了一个事件:

$('#start').on('changeTime', function () {
    setEndTime();
  });

这样,如果您更改开始时间或持续时间,它会自动更新。

最终版本也更改了结束时间选择器中的步骤:http://jsfiddle.net/20m6b7qz/5/

相关内容

  • 没有找到相关文章

最新更新