【发布时间】:2015-12-04 20:28:08
【问题描述】:
我有一个关于根据从一页传递到另一页的值创建动态表的问题。在第一页上,我定义了开始时间、结束时间和增量间隔。因此,在我选择开始时间后,让我们说上午 8:00 并选择会议长度 15 分钟,结束时间将根据开始时间以 15 分钟的间隔创建。示例结束时间:上午 8:15、上午 8:30、上午 8:45 等等,直到我最后一个不能大于晚上 9:00 的值。我可以为我的结束时间选择任何这些值。在我选择这三个值开始、结束和会议长度后,我点击提交,将我带到第二页。在此页面上,我想根据传递的值创建表。这是我到目前为止的代码:
<form name="myForm" id="myForm" method="post" action="SeconfPage.cfm">
<fieldset>
<table>
<tr>
<th>Date</th>
<td><input type="date" id="datepicker" name="datepicker"/></td>
</tr>
<tr>
<th>Start Time</th>
<td><input type="text" id="stime" name="stime"/></td>
</tr>
<tr>
<th>Length of meeting</th>
<td>
<select name="meeting" id="meeting">
<option value="">--Select length--</option>
</select>
</td>
</tr>
<tr>
<th>End Time</th>
<td><input type="text" id="etime" name="etime"></td>
</tr>
<tr>
<td><input type="button" value="Create" onClick="getTable()"></td>
</tr>
</table>
</fieldset>
</form>
$(function() {
for (var i = 5; i <= 60; i += 5) {
$('#meeting').append('<option value="' + i + '">' + i + ' min' + '</option>');
}
function setEndTime() {
var meetingLength = parseInt($('#meeting').find('option:selected').val() || 0);
var selectedTime = $('#stime').timepicker('getTime');
if(selectedTime == null || selectedTime == ""){
alert("Please select the start time");
}else{
selectedTime.setMinutes(selectedTime.getMinutes() + parseInt(meetingLength, 10), 0);
$('#etime').timepicker('option', 'minTime', selectedTime);
$('#etime').timepicker('setTime', selectedTime);
}
}
$('#stime').timepicker({
'timeFormat':'h:i a',
'minTime': '8:00 AM',
'maxTime': '9:00 PM',
'step': 30
}).on('changeTime', function () {
setEndTime();
});
var count = 0;
$('#etime').timepicker({
'timeFormat':'h:i a' + ' (Slot '+count+')',
'minTime': '8:00 AM',
'maxTime': '9:00 PM',
'step': function () {
var val = parseInt($('#meeting').find('option:selected').val());
count++
return val;
},
});
$('#meeting').bind('change', function () {
setEndTime();
});
});
function getTable(){
document.myForm.submit();
}
我试图弄清楚如何以及在第二页上创建表格的最佳方法是什么。所有值都是从我的表单传递的。例如在我的第二页:
start time: 8:00am
end time: 5:00pm
meeting length: 20min
我的想法是创建一个类似这样的 for 循环:
for(var i=stime; i<=etime; i+=meeting){
var tbl = "<tr><td>"+stime+"-"+i+"</td></tr>"
}
这样的东西会给我开始时间和基于增量的下一个值。此外,一旦创建表,将此表存储在 MySQL 数据库中的最佳方法是什么?我仍然没有弄清楚如何让它工作。如果有人可以给我一个提示,最好的方法是什么,我是否走在正确的道路上。
提前致谢。
【问题讨论】:
-
(编辑)一旦创建表,将此表存储在 MySQL 数据库中的最佳方法是什么 只是我的 ¢,但这是您在设计用户界面。否则,前端可能最终决定了一个非常糟糕的数据库结构......我建议退后一步。把它分成几个步骤。首先为您的应用程序确定最佳数据库设计。然后在界面上工作,最后是查询。
-
我仍在决定我应该走哪条路,在这种情况下什么是最有效的。感谢您的建议。
-
如果您正在考虑使用整数来确定会议时间和持续时间,一种方法是使用 unix 时间。 Unix 时间在 java(ColdFusion 的底层引擎)以及 UTC 中都是相当标准的。但是,如果您的应用程序永远不会包含多个位置,这将引入更多的复杂性,这可能是不必要的。话虽如此,使用 unix 时间来存储您的时间/日期的优势在于它将是标准化/集中式的,您可以使用 Moment.js 等 UI 库将时间本地化到最终用户的位置。
标签: javascript jquery coldfusion