Jquery从2个输入中获取总天数并显示
我有两个输入,它们的日期是2010年4月11日(我使用jquery日期选择器) 我想计算并显示两个日期之间的天数,以及总天数乘以一个设定值的值,即130美元 我下面的布局是这样的,“5天”和“$125”表示计算结果:Jquery从2个输入中获取总天数并显示,jquery,forms,select,input,Jquery,Forms,Select,Input,我有两个输入,它们的日期是2010年4月11日(我使用jquery日期选择器) 我想计算并显示两个日期之间的天数,以及总天数乘以一个设定值的值,即130美元 我下面的布局是这样的,“5天”和“$125”表示计算结果: <ol> <li><label for="start-date">Start Date:</label> <input name="start-date" id="start-date" class="date-pick dp-
<ol>
<li><label for="start-date">Start Date:</label>
<input name="start-date" id="start-date" class="date-pick dp-applied"></li>
<li><label for="end-date">End Date:</label><input name="end-date" id="end-date" class="date-pick"></li>
<li><label for="book_days">Days:</label><p>5 days</p></li>
<li><label for="book_price">Total Price:</label><p>$125</p></li>
</ol>
开始日期:
结束日期:
天数:5天
总价:125美元
像这样试试
function GetCost()
{
var days=daydiff(parseDate($('#start-date').val()), parseDate($('#end-date').val()));
var cost = days*130;
return cost;
}
function parseDate(str) {
var mdy = str.split('/')
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
function daydiff(first, second) {
return (second-first)/(1000*60*60*24)
}
请检查SO检查这把小提琴:
那么,这有什么问题?你只是解释了一些事情,但你什么也没问:)我把日期和总价硬编码到了我不想要的代码中。我想让jquery计算它。我是说什么时候?在日期字段的
blur
上?或者单击按钮?当用户完成更改结束日期时。感谢您的输入,我的日期格式为天/月/年,但对下面的代码进行简单的更改对我很有用。返回新日期(mdy[2],mdy[1]-1,mdy[0]);如果可以的话,我会投票给每个人。嗨,当我把以下日期作为输入添加到2011年7月8日-2011年7月9日时,我得到了。天:31天总价:$155Ah nvm我猜日期中的第一个值是月份。不是当天。是的,正如您所看到的,日期构造函数按以下顺序获取部分:新日期(部分[2],部分[0]-1,部分[1])
(第二个参数递减,因为在JavaScript和Java中月份从0开始)。如果您必须以不同的格式解析日期,我建议使用库来解析,例如。
<ol>
<li><label for="start-date">Start Date:</label>
<input name="start-date" id="start-date" class="date-pick dp-applied"></li>
<li><label for="end-date">End Date:</label><input name="end-date" id="end-date" class="date-pick"></li>
<li><label for="book_days">Days:</label><p id="book_days">5 days</p></li>
<li><label for="book_price">Total Price:</label><p id="book_price">$125</p></li>
</ol>
$('#start-date, #end-date').change(function(){
if($('#start-date').val() && $('#end-date').val()){
var startDate = parseDate($('#start-date').val())
var endDate = parseDate($('#end-date').val())
var days = calcDaysBetween(startDate, endDate)
var price = calcPrice(days)
$('#book_days').html(days + " days")
$('#book_price').html("$" + price)
}
});
function parseDate(s){
// TODO locale specific parsing here, e.g. http://www.datejs.com/
var parts = s.split('/')
return new Date(parts[2], parts[0]-1, parts[1])
}
function calcDaysBetween(startDate, endDate){
return (endDate-startDate)/(1000*60*60*24)
}
function calcPrice(days){
return days * 5;
}