2014-05-25 16 views
13

Ho un modulo con tre campi, "start_date", "days", "end_date". Vorrei ottenere la data di fine aggiungendo giorni alla data di inizio.Aggiunta di giorni a una determinata data in jQuery

Il mio codice jQuery è:

$("#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)); 
}); 

Nel campo "end_date" ricevo "nan-An-An".

Cosa sto sbagliando?

+0

cosa si ottiene nel campo 'start_date'? –

+0

Come ho detto nella domanda, ottengo NaN-aN-aN – Cosmin

+0

La tua domanda dice che ottieni NAN in 'end_date', ti sto chiedendo cosa ottieni in' start_date' (che se è anche NAN, è perché il valore di ' # start_date' non rappresenta un formato data valido) –

risposta

16

NaN sta per Not a Number - Ciò significa che l'input dell'utente non è valido.

Si potrebbe verificare per vedere se l'ingresso è valido utilizzando if(!isNaN(date.getTime())){

Alcuni codice per iniziare:

;(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

Spero che questo aiuti.

W

+0

Ciao WG, l'ho trovato logico, ma non so perché mi dà Data non valida, perché quando passo la data della stringa al nuovo Date(), non ne crea uno nuovo. c'è qualche soluzione a questo problema? – krachleur

+0

Come fornire o aggiungere giorni in cui il formato della data è simile a Gio 15/02/2018 aggiungere 3 giorni in questo valore e ottenere risultato dom 18/2/2018 –

Problemi correlati