我在顶部有一个文本框,显示总持续时间。现在发生的事情是用户从时间戳中选择一个持续时间,这将显示在文本框中,然后将其添加到新行中。 现在我的情况是文本框的格式就像这样的“00小时00分00秒”。
因此,例如,如果总持续时间为00小时30分钟00秒,并且如果您从时间卡(显示在文本框中)中选择00小时20分钟00秒,然后将其添加到新行,则00小时30分钟00秒应减去00小时20分钟00秒制作00小时10分钟00秒。
问题是我知道如何进行计算,但我不知道如何在00小时00分00秒格式中匹配它。我的计算适用于普通数字格式,但我怎样才能使用这种格式?
Below is my jquery code which does the calculation:
var duration = '<?php echo $_POST['durationChosen']; ?>'
$("#qandatbl td.duration input").live("change", function(){
calculateDuration();
});
function calculateDuration()
{
var totalduration = duration;
//duration is the variable which displays total duration e.g 00 Hrs 30 Mins 00 Secs
$("#qandatbl td.duration input").each(function (i, elm){
totalduration = totalduration - parseInt($(elm).val(), 10);
});
$("#total-duration").text(totalduration);
}
下面是html代码:
<table id="questionDuration">
<tr>
<th colspan="2">
Question Duration
</th>
</tr>
<tr>
<td><input type="text" id="questiondurationpicker" name="questionDuration" readonly="readonly" /></td>
// timepicker textbox for duration
</tr>
<tr>
<td>Total Duration Remaining: <span id="total-duration"></span></td>
this is where the total duration is displayed
</tr>
</table>
<table id="qandatbl" border="1">
<tr>
<th class="duration">Question Duration</th>
</tr>
</table>
// above is where the duration selected is stored in a new row
答案 0 :(得分:1)
编辑:
看看这个小提琴。
http://jsfiddle.net/pixelass/URLR5/15/
http://jsfiddle.net/pixelass/URLR5/16/(更快的版本)
http://jsfiddle.net/pixelass/URLR5/17/(强制两位数,例如9 = 09)
HTML
current Time: <span id="currentTime">25 Hrs 24 Mins 45 Secs</span>
<hr>
subtract Time: <span id="minusThis">07 Hrs 15 Mins 21 Secs</span>
<hr>
new Time: <span id="newTime"></span>
<hr>
<button>subtract the time</button>
的jQuery
var minusThis = $('#minusThis').text(),
date = minusThis.match(/(\d\d)/ig),
currentTime = $('#currentTime').text(),
newDate = currentTime.match(/(\d\d)/ig),
newsetH = parseInt(date[0], 10),
newsetM = parseInt(date[1], 10),
newsetS = parseInt(date[2], 10),
hours = parseInt(newDate[0], 10),
mins = parseInt(newDate[1], 10),
secs = parseInt(newDate[2], 10);
function calculate() {
newH = hours - newsetH;
newM = mins - newsetM;
newS = secs - newsetS;
$('#newTime').text(newH + ' Hrs ' + newM + ' Mins ' + newS + ' Secs');
}
$('button').on('click', calculate);
答案 1 :(得分:0)
说文本框的格式为“00小时00分00秒”你的意思是文本输入的值为“00小时10分00秒”?
如果是这样,你只需要从字符串中获取这些数字。您可以通过简单的正则表达式实现此目的。例如:
var value = "10 Hrs 20 Mins 00 Secs";
var date = value.match(/(\d\d)/ig); // now date is an array. In this case ["10", "20", "00"]
希望它有所帮助。
BTW。附加change
事件可以通过以下方式重写:
$("#qandatbl td.duration input").live("change", calculateDuration);
没有创建更清洁和不必要的功能。