2014-05-25 15 views
13

Tôi có biểu mẫu với ba trường "start_date", "days", "end_date". Tôi muốn có ngày kết thúc bằng cách thêm ngày vào ngày bắt đầu.Thêm ngày vào ngày cụ thể trong jQuery

mã jQuery của tôi là:

$("#days").change(function(){ 
    var start_date = new Date($("#start_date").attr('value')); 
    var days = parseInt($("#days").attr('value'))-1; 
    var end_date = new Date(start_date); 
    end_date.setDate(start_date.getDate() + days);        
    $("#end_date").val(end_date.getFullYear() + '-' + ("0" + (end_date.getMonth() + 1)).slice(-2) + '-' + ("0" + end_date.getDate()).slice(-2)); 
}); 

Trong trường "end_date" Tôi nhận được "NaN-an-An".

Tôi đang làm gì sai?

+0

bạn sẽ nhận được gì trong trường 'start_date'? –

+0

Như tôi đã nói trong câu hỏi, tôi nhận được NaN-aN-aN – Cosmin

+0

Câu hỏi của bạn cho biết bạn nhận được NAN trong 'end_date', tôi hỏi những gì bạn nhận được trong' start_date' (nếu NAN của nó cũng là vì giá trị của ' # start_date' không đại diện cho định dạng ngày hợp lệ) –

Trả lời

16

NaN là viết tắt của Not a Number - Điều này có nghĩa là đầu vào của người dùng không hợp lệ.

Bạn có thể kiểm tra xem nếu đầu vào là hợp lệ bằng cách sử dụng if(!isNaN(date.getTime())){

Một số mã để giúp bạn bắt đầu:

;(function($, window, document, undefined){ 
    $("#days").on("change", function(){ 
     var date = new Date($("#start_date").val()), 
      days = parseInt($("#days").val(), 10); 

     if(!isNaN(date.getTime())){ 
      date.setDate(date.getDate() + days); 

      $("#end_date").val(date.toInputFormat()); 
     } else { 
      alert("Invalid Date"); 
     } 
    }); 


    //From: http://stackoverflow.com/questions/3066586/get-string-in-yyyymmdd-format-from-js-date-object 
    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 yyyy + "-" + (mm[1]?mm:"0"+mm[0]) + "-" + (dd[1]?dd:"0"+dd[0]); // padding 
    }; 
})(jQuery, this, document); 

http://jsfiddle.net/MCzJ6/1

Hope this helps.

W

+0

Xin chào WG, tôi thấy nó hợp lý, nhưng tôi không biết tại sao nó mang lại cho tôi Ngày không hợp lệ, bởi vì khi tôi vượt qua ngày chuỗi ngày mới(), nó không tạo ra một cái mới. Có giải pháp nào cho vấn đề này? – krachleur

+0

Cách cung cấp hoặc thêm ngày khi bạn có định dạng ngày tháng như Thu 15/02/2018 thêm 3 ngày vào giá trị này và nhận kết quả Sun 18/2/2018 –

Các vấn đề liên quan