adaugare numar zile la data din datepicker

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
andras
Mesaje:430

adaugare numar zile la data din datepicker

Salut,
Am in pagina un input text pe care l-am facut datepicker. Folosesc

Cod: Selectaţi tot

<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
Aceasta variabila este trimisa prin ajax. Vreau ca pe baza datei sistem (datacurenta) sa setez in :success o valoare pentru alta variabila (data2), la care sa pun spre exemplu datacurenta.getDate +3, adica sa adaug 3 zile. La sfirsit vreau sa compar in JS cele 3 variabile, ex:

Cod: Selectaţi tot

<script>
if (data1 <= datacurenta && data2 >= datacurenta){ ... }
else{ ...}
</script>
Cum procedez? Am incercat in multe feluri, problema e ca atunci cind setez data2 se modifica toate datepicker. Nu inteleg de ce. Multumesc.

MarPlo Mesaje:4343
Salut
Variabila "datacurenta", e cu data-timpul transmis la ajax de pe server sau e preluata din datepicker; si ce valoare are?
Pune codul si ce ai incrcat.

andras Mesaje:430
Am extras esentialul pentru ca e prea mult sa pun tot codul:

Cod: Selectaţi tot

<script>
var date = $('#datepickerv').datepicker('getDate'); // preia din html si are valoare Tue Sep 24 2016 00:00:00 GMT+0300 (GTB Summer Time)
var day = $.datepicker.formatDate('DD', date); // Saturday
var datalimita = date.setDate(date.getDate()+3); 
console.log(date); //Tue Sep 27 2016 00:00:00 GMT+0300 (GTB Summer Time) (de ce se schimba? N-ar trebui sa ramina tot data 24 Sep?)
console.log(datalimita); // 1474923600000
</script>
Aici e toata problema, s-a modificat si date, n-a ramas 24. Imi trebuie ca date sa fie 24 iar datalimita sa fie 27, ca sa pot incadra datacurenta inre ele (datacurenta este data pe care o alege user-ul, deci vine tot din html, poate fi 24, 25 26 sau 27).

MarPlo Mesaje:4343
Situatia prezentata se petrece deoarece instructiunea: date.setDate() face setarea datei la obiectul apelat (date), apoi returneaza valoarea la variabila (datalimita).
- Solutia e sa faci o copie a obiectului date in alta variabila si sa aplici setDate() la obiectul copiat.

Cod: Selectaţi tot

<script>
var date = $('#datepickerv').datepicker('getDate'); //ia din html, are valoare Tue Sep 24 2016 00:00:00 GMT+0300 (GTB Summer Time)
var day = $.datepicker.formatDate('DD', date); // Saturday
var datalimita = new Date(date.valueOf());  //copie obiectul date
var datalimita = datalimita.setDate(date.getDate()+3);  //seteaza data la obiectul copiat
console.log(date); //valoare nemodificata
console.log(datalimita); // 1474923600000
</script>

andras Mesaje:430
Functioneaza, multumesc. Plus ca face automat conversia intre forma Tue Sep 27 2016 00:00:00 GMT+0300 (GTB Summer Time) si forma UNIX 1474923600000, nu mai este nevoie sa aplic functie de conversie. Deci, s-a rezolvat.

andras Mesaje:430
Salut,
Se poate aplica o functie datepicker la o variabila venita din ajax? Ex. in :success:

Cod: Selectaţi tot

<script>
var date = $('#datepickerv').datepicker('getDate'); // Fri Sep 30 2016 00:00:00 GMT+0300 (GTB Summer Time)
var obj = msg['culege']; // array venit din ajax care contine cimpul dataexp
var dataexpirarii = obj[0].dataexp; //2016-09-30
dataexpirarii = dataexpirarii.datepicker('getDate'); // eroare :1:487 Uncaught TypeError: dataexpirarii.datepicker is not a function
</script>
Ideea este este ca vreau sa aduc dataexp (2016-09-30) la forma Fri Sep 30 2016 00:00:00 GMT+0300 (GTB Summer Time) ca sa le pot compara. In prezent JS nu le poate compara desi in baza de date cimpul dataexp este de tip DATE.

MarPlo Mesaje:4343
Nu stiu cum functioneaza datepicker(), dar din ce vad in cod, functia datepicker() se aplica la un obiect jQuery , nu la o data.
Poti sa incerci cu obiectul Date() sa transformi sirul cu data intr-un obiect JS pentru lucru cu data-timp:

Cod: Selectaţi tot

var dataexpirarii = new Date(obj[0].dataexp);
Sau, daca e pentru comparatie, datele respective le transformi in numar UnixTimestamp.

andras Mesaje:430
Functioneaza cu obiect JS. Multumesc!

Subiecte similare