Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery从2个输入中获取总天数并显示_Jquery_Forms_Select_Input - Fatal编程技术网

Jquery从2个输入中获取总天数并显示

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-

我有两个输入,它们的日期是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-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;
    }