jQuery - 当我格式化日期时,日期将变为无效日期

时间:2016-04-01 14:50:28

标签: jquery date

如何格式化日期。我希望日期格式为dd / mm / yyyy 29/03/2016。当我在改变夜晚时,应该在添加夜晚后显示结帐日期但是显示无效日期。

Html代码

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<label id="icon" for="name"><i class="icon-shield"></i>Check In</label><input type="text" id="checkin" class="HotelSearchFrom-Checkin" name="checkin" required/>
<select id="ddlnight" class="HotelSearchFrom-ddlNight">
<option value="0">Night</option>
<option value="1">1 Night</option>
<option value="2">2 Nights</option>
</select>
<label id="icon" for="name"><i class="icon-user"></i>Check Out</label>
<input type="text" id="checkout" class="HotelSearchFrom-Date" name="checkout" required/>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>


<小时/> jQuery代码

<script>
$(function() {
    $( "#checkin,#checkout" ).datepicker({ dateFormat: 'dd/mm/yy' });
    (function($, window, document, undefined){
        $("#ddlnight").on("change", function(){
            var date = new Date($("#checkin").val());
            days = parseInt($("#ddlnight").val(), 10);
            if(!isNaN(date.getTime())){ 
                alert("if is working"); 
                date.setDate(date.getDate() + days);
                $("#checkout").val(date.toInputFormat());
            } 
            else {
                alert("Invalid Date");  
            }
        });
        Date.prototype.toInputFormat = function() {
        var yyyy = this.getFullYear().toString();
        var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
        var dd  = this.getDate().toString();
        return  (  (dd[1]?dd:"0"+dd[0]) + "/" + mm[1]?mm:"0"+mm[0]) + "/" +yyyy; // padding
        };
    })(jQuery, this, document);
});
</script>

1 个答案:

答案 0 :(得分:0)

问题在于您的开始和结束括号。使用此语法,它必须正常工作。 Working Fiddle 您的核心逻辑。

(dd[1] ? dd : "0" + dd[0]) + "/" + (mm[1] ? mm : "0" + mm[0]) + "/" + yyyy;

您之前拥有此部分代码的内容 ((dd[1]?dd:"0"+dd[0]) + "/" + mm[1]?mm:"0"+mm[0])(你可以注意到大括号的错误)只给出了一个月的输出。老实说,我不确定为什么会这样。但是在括号内包含三元代码必须解决您的问题。