Javascript Bootstrap日期选择器日期差和保留计算

Javascript Bootstrap日期选择器日期差和保留计算,javascript,jquery,twitter-bootstrap,datepicker,Javascript,Jquery,Twitter Bootstrap,Datepicker,我正在建立一个简单的预订系统,它需要: 1.引导数据采集器中的天数差(失败) 2.组合框中的房间数(成功) 3.房价(200美元) 最后,将所有3个值相乘并显示在输入“grandtotal”中。 我尝试过几种方法,但由于我不熟悉javascript,所以遇到了一些问题。你们能帮助我并指导我完成这个过程吗? 一旦用户选择了房间的日期和数量,“总计”必须自动计算。计算天数的脚本编码也不正确。 我需要更多的帮助,也许我可以联系你。再次感谢 1.用户使用Bootstrap Datepicker选择入住和

我正在建立一个简单的预订系统,它需要:
1.引导数据采集器中的天数差(失败)
2.组合框中的房间数(成功)
3.房价(200美元)
最后,将所有3个值相乘并显示在输入“grandtotal”中。

我尝试过几种方法,但由于我不熟悉javascript,所以遇到了一些问题。你们能帮助我并指导我完成这个过程吗?
一旦用户选择了房间的日期和数量,“总计”必须自动计算。计算天数的脚本编码也不正确。
我需要更多的帮助,也许我可以联系你。再次感谢

1.用户使用Bootstrap Datepicker选择入住和退房日期,然后选择房间数。当用户选择时,输入的“grandtotal”必须自动更新

<form method="post" action="reservation.php">
  <input id="from" name="checkin" type="text" id="from"/>
  <input id="to" name="checkout" type="text" id="to"/>
  <select onchange="ChooseContact(this)" name="numrooms" id="rooms">
    <option value="1">1 room</option>
    <option value="2">2 rooms</option>
   </select>
  <select class="hidden" name="price">
          <option selected="selected">200</option>
  </select>
</form>

// this displays the respective values for selecting the dates, the number of rooms and finally, the "grandtotal" is shown automatically.
<input readonly id="totaldays" placeholder="1">
<input readonly id="totalrooms" placeholder="1">
<input readonly id="grandtotal" placeholder="-">

// bootstrap datepicker configuration 
<script>
$(function() {
var dates = $( "#from, #to" ).datepicker({
defaultDate: "+0w",
changeMonth: false,
numberOfMonths: 1,
dateFormat: 'dd-mm-yy',
minDate: '01-10-2016',
maxDate: '31-10-2016',
});
});
</script>

// bootstrap datepicker days calculation and total rooms assigned to input
<script>
$(function() {    
$('.datepicker').datepicker({format: "dd-mm-yyyy"});
var calculateDuration = function() {
    var startDate = new Date($('#from').val());
    var endDate = new Date($('#to').val());
    var diff = endDate - startDate;
    document.getElementById('totaldays').value = (Number(diff) / 86400000) +1;  
}
$('#from').change(calculateDuration);
$('#to').change(calculateDuration);
});

function ChooseContact(data) {
var totalrooms = data.value;
document.getElementById ("totalrooms").value = (Number(totalrooms));
}
</script>

1间
2个房间
200
//这将显示用于选择日期、房间数量的相应值,最后自动显示“grandtotal”。
//引导数据采集器配置
$(函数(){
变量日期=$(“#从,#到”)。日期选择器({
默认日期:“+0w”,
更改月份:false,
月数:1,
日期格式:“dd-mm-yy”,
minDate:'01-10-2016',
maxDate:'31-10-2016',
});
});
//bootstrap datepicker天数计算和分配给输入的房间总数
$(函数(){
$('.datepicker').datepicker({格式:“dd-mm-yyyy”});
var calculateDuration=函数(){
var startDate=新日期($('#from').val());
var endDate=新日期($('#to').val());
var diff=结束日期-开始日期;
document.getElementById('totaldays')。值=(数字(差异)/86400000)+1;
}
$('#from')。更改(计算);
$('to')。更改(计算);
});
功能选择联系人(数据){
var totalrooms=data.value;
document.getElementById(“totalrooms”).value=(Number(totalrooms));
}

仅此而已,我不知道当用户单击每个值时如何分配每个输入(totaldays、totalrooms、grandtotal),以及如何进行grandtotal计算。

这里有一个可行的解决方案

您的负天数是固定的。
如果存在不可能的日期范围,则错误显示为红色。
总价格是计算出来的

如果您不了解本代码中的任何内容,请随时询问。
;)

var-roomPrice=200;
//引导数据采集器配置
$(文档).ready(函数(){
$(“#从,#到”)。日期选择器({
默认日期:“+0w”,
更改月份:false,
月数:1,
日期格式:“dd-mm-yy”,
minDate:'01-10-2016',
最大日期:2016年10月31日
});
});
功能选择联系人(数据){
var totalrooms=data.value;
document.getElementById(“totalrooms”).value=(Number(totalrooms));
}
函数计算(){
var-diff=0;
如果(开始日期!=“”&结束日期!=“”){
var startDate=新日期($('#from').val());
var endDate=新日期($('#to').val());
差异=结束日期-开始日期;
}
如果(差异==0){
美元(“#总天数”).val(“1”);
$(“#grandtotal”).val(“”.css(“颜色”、“黑色”);
}
如果(差异>1){
美元(“#总天数”).val((差额/86400000)+1)
$(“#grandtotal”).val(“”.css(“颜色”、“黑色”);
}
if(diff0){
如果(房间!=“”){
var总计=帕塞因特(天)*帕塞因特(房间)*房间价格;
$(“#grandtotal”).val(total.toFixed(2)).css(“颜色”、“黑色”);
}否则{
$(“#grandtotal”).val(“”.css(“颜色”、“黑色”);
}
}
}
$(“#房间,#从,#到”)。关于(“更改”,函数(){
grandTotal();
$(“.datepicker”).hide();
});

有多少房间
1间
2个房间
200

嘿,很抱歉ans太晚了,但我尝试了一些东西,只对您的代码进行了一些更改(使用默认值初始化,使用了一些函数),对我来说效果很好..是的,您可以继续改进它..希望它有帮助:D

$().ready(函数()){
变量日期=$(“#从,#到”)。日期选择器({
showOtherMonths:错误,
选择OtherMonths:false,
});
var dt=新日期();
var today=“”;
今天=dt.getDate()+“/”;
今天+=dt.getMonth()+1+“/”;
今天+=dt.getFullYear()+“”;
var tom=“”;
tom=dt.getDate()+“/”;
tom+=(dt.getMonth()+2)+“/”;
tom+=dt.getFullYear()+“”;
$(“#from”).val(今天);
$(“#to”).val(汤姆);
getDatediff();
法案();
});
$('#from,#to')。更改(函数(){
getDatediff();
});
函数getDatediff()
{
var startDate=新日期($('#from').val());
var endDate=新日期($('#to').val());
var diff=结束日期-开始日期;
var res=(数量(差异)/86400000);
如果(分辨率>0)
{
$('totaldays').val(res);
}
其他的
{
$('#totaldays').val(0);
}
法案();
}
$(“#从,#到”).change(函数(){
getDatediff();
});
功能条例草案(
{
var房间=$(“#totalrooms”).val();
var days=$(“#totaldays”).val();
var amt=$(“#价格选项:选定”).text();
var总和=房间*天数*金额;
美元(“#总计”).val(总和);
}
$(“#房间”)。更改(功能(){
$('#totalrooms').val($(this).find('option:selected').val())
getDatediff();
});

发件人:
致:
选择房间: 1间 2个房间
选择价格: 200


您的详细信息

天数:
房间:
总计:
现在发生了什么??你得到了什么值??Hi@RohitS,如果我选择2016年10月1日和2016年10月2日的日期,它会显示32天Hi,因为你的第二个参数是日期本身,而不是月份,所以它应该是类似于“2016年1月10日”和“2016年2月10日”的东西对不起,在哪里?Rohitt您从和到的文本字段的输入应该是mm/dd/yyyyHello Louys,我非常感谢您所做的努力,这对我来说非常有用。非常感谢,这正是我需要的。但只有一个公共关系