Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Internet > Web razvoj > Klijentske aplikacije
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Klijentske aplikacije (X)HTML, CSS, JavaScript, AJAX...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 13.8.2011, 22:15   #1
dusandevic
Član
 
Član od: 23.8.2008.
Lokacija: Sremska Mitrovica
Poruke: 105
Zahvalnice: 8
Zahvaljeno 16 puta na 12 poruka
Slanje poruke preko MSN-a korisniku dusandevic Slanje poruke preko Skypea korisniku dusandevic
Question jQuery Daterange

Kako da u ovom primeru namestim ograničenje za datum, tako da razlika između dva unosa ne sme biti veća od 4 meseca?

Kod:
<meta charset="utf-8"> 	 	 	 	 	 	 	 	<script> 	$(function() { 		var dates = $( "#from, #to" ).datepicker({ 			defaultDate: "+1w", 			changeMonth: true, 			numberOfMonths: 3, 			onSelect: function( selectedDate ) { 				var option = this.id == "from" ? "minDate" : "maxDate", 					instance = $( this ).data( "datepicker" ), 					date = $.datepicker.parseDate( 						instance.settings.dateFormat || 						$.datepicker._defaults.dateFormat, 						selectedDate, instance.settings ); 				dates.not( this ).datepicker( "option", option, date ); 			} 		}); 	}); 	</script>    <div class="demo">  <label for="from">From</label> <input type="text" id="from" name="from"/> <label for="to">to</label> <input type="text" id="to" name="to"/>  </div><!-- End demo -->    <div class="demo-description"> <p>Select the date range to search for.</p> </div><!-- End demo-description -->
Link do izvora skripte

Trudim se, ali ne znam ovaj JavaScript
dusandevic je offline   Odgovor sa citatom ove poruke
Stara 14.8.2011, 20:31   #2
Remedy
Veteran
 
Član od: 5.11.2005.
Poruke: 826
Zahvalnice: 177
Zahvaljeno 199 puta na 154 poruka
Određen forumom Re: jQuery Daterange

Tvoj kod baš i nije čitko postavljen , ali na primeru stranice na koju si postavio link. Datepicker ima opcije minDate i maxDate (među ostalima, vide se na tabu Options na toj stranici). Na primeru koda sa te stranice (onaj deo koji se pojavi kada odeš na "view source"):
HTML kod:
<script>
$(function() {
	var dates = $( "#from, #to" ).datepicker({
		defaultDate: "+1w",
		changeMonth: true,
		numberOfMonths: 3,

		/* Sledece 2 linije su dodate */
		minDate: "0d",
		maxDate: "+4m",

		onSelect: function( selectedDate ) {
			var option = this.id == "from" ? "minDate" : "maxDate",
				instance = $( this ).data( "datepicker" ),
				date = $.datepicker.parseDate(
					instance.settings.dateFormat ||
					$.datepicker._defaults.dateFormat,
					selectedDate, instance.settings );
			dates.not( this ).datepicker( "option", option, date );
		}
	});
});
</script>
Ovako bi minimalni dan za unos bio današnji dan, a maksimalni za 4 meseca. Nadam se da si to nameravao (ako nije onda pogledaj opis opcija minDate i maxDate).
Naravno, podatke moraš da iskontrolišeš i na serverskoj strani.
Remedy je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Remedy na korisnoj poruci:
dusandevic (14.8.2011)
Stara 15.8.2011, 2:24   #3
dusandevic
Član
 
Član od: 23.8.2008.
Lokacija: Sremska Mitrovica
Poruke: 105
Zahvalnice: 8
Zahvaljeno 16 puta na 12 poruka
Slanje poruke preko MSN-a korisniku dusandevic Slanje poruke preko Skypea korisniku dusandevic
Određen forumom Re: jQuery Daterange

Citat:
Remedy kaže: Pregled poruke
Tvoj kod baš i nije čitko postavljen , ali na primeru stranice na koju si postavio link. Datepicker ima opcije minDate i maxDate (među ostalima, vide se na tabu Options na toj stranici). Na primeru koda sa te stranice (onaj deo koji se pojavi kada odeš na "view source"):
HTML kod:
<script>
$(function() {
    var dates = $( "#from, #to" ).datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 3,

        /* Sledece 2 linije su dodate */
        minDate: "0d",
        maxDate: "+4m",

        onSelect: function( selectedDate ) {
            var option = this.id == "from" ? "minDate" : "maxDate",
                instance = $( this ).data( "datepicker" ),
                date = $.datepicker.parseDate(
                    instance.settings.dateFormat ||
                    $.datepicker._defaults.dateFormat,
                    selectedDate, instance.settings );
            dates.not( this ).datepicker( "option", option, date );
        }
    });
});
</script>
Ovako bi minimalni dan za unos bio današnji dan, a maksimalni za 4 meseca. Nadam se da si to nameravao (ako nije onda pogledaj opis opcija minDate i maxDate).
Naravno, podatke moraš da iskontrolišeš i na serverskoj strani.
Izvinjavam se zbog nečitkog koda, nešto je zabagovalo prilikom copy/paste.

Ovo mi ne rešava problem. Prvi unos može biti proizvoljan, a drugi unos može biti najviše 4 meseca od prvog unosa (ne od današnjeg datuma, kako se ovim kodom dobija). Ovakvo rešenje "prolazi" samo u slučaju da je prvi unos uvek današnji datum, ali u realnosti neće biti tako. Proveo sam nekoliko sati pokušavajući uz pomoć te jQuery dokumentacije, ali nisam uspeo...
dusandevic je offline   Odgovor sa citatom ove poruke
Stara 15.8.2011, 6:05   #4
Remedy
Veteran
 
Član od: 5.11.2005.
Poruke: 826
Zahvalnice: 177
Zahvaljeno 199 puta na 154 poruka
Određen forumom Re: jQuery Daterange

Šta ima lepše od javascripta uz jutarnju kafu
HTML kod:
<script>
$(function() {
	var dates = $( "#from, #to" ).datepicker({
		/* Dan koji je odabran po defaultu, +1d je sutrasnji datum, 0d
		je danasnji... */
		defaultDate: "+1d",
		changeMonth: true,
		numberOfMonths: 3,
		onSelect: function( selectedDate ) {
			/* customRange - nova promenljiva za opseg u mesecima,
			4 posto rece 4 meseca */
			var customRange = 4,
				/* ako je aktivno from polje, vraca maxDate, da bi to 
				postavili kao opciju za drugo input polje, ova linija je
				IZMENJENA (izmenjeno je minDate i maxDate u
				odnosu na originalnu skriptu) */
				option = this.id == "from" ? "maxDate" : "minDate",
				instance = $( this ).data( "datepicker" ),
				date = $.datepicker.parseDate(
					instance.settings.dateFormat ||
					$.datepicker._defaults.dateFormat,
					selectedDate, instance.settings );
			/* ako je kao option postavljeno maxDate, onda odabrani
			datum povecavamo za 4 meseca, u protivnom je option
			minDate, pa datum smanjujemo za 4 (npr ako je prvo
			popunjeno #to input polje, onda #from ne moze biti ranije
			od 4 meseca pre)  */
			if(option == "maxDate")
			{
				date.setMonth(date.getMonth() + customRange);
			}
			else
			{
				date.setMonth(date.getMonth() - customRange);
			}
			/* postavljanje opcije minDate ili maxDate za drugo input polje */
			dates.not( this ).datepicker( "option", option, date );
		}
	});
});
</script>
Dakle prvi datum je proizvoljan, bez obzira da li se prvo unosi #from ili #to. Ako je prvo uneto #from, #to ne može biti kasnije od +4 meseca, ako je prvo uneto #to, onda #from ne može biti ranije od -4 meseca. Trebalo bi da radi, ako ne, popravljaćemo popodne
Remedy je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Remedy na korisnoj poruci:
dusandevic (15.8.2011)
Stara 15.8.2011, 14:25   #5
dusandevic
Član
 
Član od: 23.8.2008.
Lokacija: Sremska Mitrovica
Poruke: 105
Zahvalnice: 8
Zahvaljeno 16 puta na 12 poruka
Slanje poruke preko MSN-a korisniku dusandevic Slanje poruke preko Skypea korisniku dusandevic
Određen forumom Re: jQuery Daterange

Radi!

Hvala ti dobri čoveče!
dusandevic je offline   Odgovor sa citatom ove poruke
Stara 15.8.2011, 21:55   #6
Remedy
Veteran
 
Član od: 5.11.2005.
Poruke: 826
Zahvalnice: 177
Zahvaljeno 199 puta na 154 poruka
Određen forumom Re: jQuery Daterange

Dobro je ako radi kako si zamislio, ali ima jedna stvar koju bi trebalo popraviti. Poslednja linija koda
HTML kod:
dates.not( this ).datepicker( "option", option, date );
stvara beskonačni loop, ako koristiš npr Web developer toolbar na Firefox-u videćeš da izbacuje "too much recursion". Na Jquery UI su to nekako prevideli. Tako da evo izmenjene skripte, bez tog problema, malo kraće napisan onaj if/else deo, i dodatak koji uklanja ograničenje za input polje ako korisnik ručno obriše prethodno unetu vrednost u drugo input polje (to je onaj deo "beforeShow"). Kad se već zezamo, bar da radi kako treba.
HTML kod:
<script>
$(function() {
	var dates = $( "#from, #to" ).datepicker({
		defaultDate: "+1d",
		changeMonth: true,
		numberOfMonths: 3,
		/* Ovo uklanja ogranicenje, ako korisnik rucno obrise prethodno unetu vrednost u drugom polju */
		beforeShow: function(inputField){
			if(!dates.not(this).attr("value"))
			{
				$(this).data("datepicker").settings["maxDate"] = null;
				$(this).data("datepicker").settings["minDate"] = null;
			}
		},
		onSelect: function( selectedDate ) {
			/* customRange - nova promenljiva za opseg u mesecima */
			var customRange = 4,
				/* ako je aktivno from polje, vraca maxDate, da bi to postavili kao opciju za drugo input polje, ova linija je IZMENJENA (izmenjeno je minDate i maxDate u odnosu na originalnu skriptu) */
				option = this.id == "from" ? "maxDate" : "minDate",
				instance = $( this ).data( "datepicker" ),
				date = $.datepicker.parseDate(
					instance.settings.dateFormat ||
					$.datepicker._defaults.dateFormat,
					selectedDate, instance.settings );
			/* ako kao option nije postavljeno maxDate, datum smanjujemo za 4 */
			customRange = option == "maxDate" ? customRange : -customRange;
			date.setMonth(date.getMonth() + customRange);
			/* postavljanje opcije minDate ili maxDate za drugo input polje */
			dates.not(this).data("datepicker").settings[option] = date;
		}
	});
});
</script>
Remedy je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Kako uraditi jquery baner zoxkika2 Web razvoj 3 6.10.2010 17:16
Problem sa sajtom i jQuery animacijom maxtter Web dizajn 2 3.4.2010 18:15
Dinamički GridView u ASP.NET Ajaxu i jQuery dechkotzar Serverske aplikacije i baze podataka 3 20.3.2009 22:10


Sva vremena su po Griniču +2 h. Sada je 21:45.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com