Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [js] dynamiczne przydzielanie 'punktów'
DeyV
post 29.01.2004, 14:01:55
Post #1





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Otrzymałem zadanie by przygotowac prosty formularz pozwalajacy na rozdysponowanie określonej liczby 'punktów' na ileś grup.
I zupełnie nie mam pomysłu jak to zrobić.

Dlatego chętnie wysłucham wszelkich propozycji, jak widzielibyście taki mechanizm:
mam np. 20 punktów oraz np. 3 dostępne grupy, do któych punkty muszą trafić.
Oznacza to, że może być tak, że user 'wrzuci' wszystkie 20 do 1 grupy, może być tak że da 10 do 1 grupy, 5 do 2 grupy itd.
Założenie jest takie, że:
a) nie może przydzielić wiecej niż x (tu 20) punktów
cool.gif musi przydzielić wyszstkie (domyślnie są w grupie 1)
c) jeśli włożył coś do 2 grupy, to muszą one w jakiś sposób opuścić 1.

Na jakiej zasadzie proponowalibyście zrobić taki mechanizm?


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
kszychu
post 29.01.2004, 14:12:34
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


Na pozór proste:
trzy inputy:
20
0
0
zmieniamy wartość w 2 z 0 na 1, automatycznie (onChange) zmienia sie wartosc pierwszego na 19,
zmieniamy na 50 alert('Kolo! nie przesadzaj!')
Ale idzmy dalej:
co, jesli juz mamy sytuację: 7 7 6
dokładamy do 3 to z którego ma teraz odjąć?.... Może po połowie z każdego z pozostałych? a może wszystko z 1 lub 2?
Chodzi mi o to, że trzeba tuściśle sprecyzować założenia, a sam skrypt to już później banał.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
DeyV
post 29.01.2004, 14:55:56
Post #3





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Problem w tym, ze tuuser ma zadecydować, z którego koszyka wyjąć.
Dlatego zastanawiałem się nad tym, czy nie zrobić tego przy pomocy kilku selectó, pozwalajacych na przeżucenie z jednego do drugiego.
takie coś mogło by się sprawdzić przy paru 'punktach' jednak przy ich większej ilości, stanie się strasznie drażniące.

Czy można jeszcze inaczej?


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
scanner
post 29.01.2004, 14:59:07
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




W przypadku odjęcia przerzuciłbym wolne punkty do puli "do ryzdyspnowania" i ostrzegł, że nie wszystkie zostały przydzielone.
W ten sposób nie interesuje nas w tym momencie ilosc grup.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
kszychu
post 29.01.2004, 15:21:15
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


Otóż to! A nierozdysponowane można dla grupy 1 (domyślnej).


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
marlowe
post 29.01.2004, 16:37:09
Post #6





Grupa: Zarejestrowani
Postów: 178
Pomógł: 0
Dołączył: 2.11.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam,
hehe zainspirowałeś mnie tym tematem i postanowiłem wreszcie napisać sam jakiś skrypt w js (zawsze tylko zmieniałem gotowe). Siedzialem nad tym 55 minut (naprawdę! :D ale w końcu mi się udało. Z dumą ;) prezentuję więc skrypt, który spełnia ww. zadanie ale pewnie i tak będzie dla Ciebie nieprzydatny...
w head:
Kod
<script language="JavaScript"><!--

function czycalkowita() {

calkowita=/^d+$/;

if



((calkowita.test(document.dwadziescia.liczba1.value)==false)||(calkowita.test(document.dwadziescia.liczba2.value)==false)||(calkowita.test(document.dwadziescia.liczba3.value)==false))

{

  alert("Wprowadź liczbę całkowitą.");

}

else

{

  czydobrze();

}

}

function czydobrze() {

var suma=document.dwadziescia.liczba1.value+'+'+document.dwadziescia.liczba2.value+'+'+document.dwadziescia.liczba3.value

var rezultat=eval(suma)

if(rezultat==20) {

alert("Wszystko OK. Suma jest równa 20"); }

else if(rezultat<20) {

alert("Za mało. Musisz podać większą wartość dla którejś z grup"); }

else {

alert("Za dużo Musisz podać mniejszą wartość dla którejś z grup"); }

}

//--></script>

w body:
[xml:1:6d358775e8]Sprawdzanie, czy suma liczb podanych w trzech polach jest równa 20<p>
<form name="dwadziescia">
Grupa 1: <input type="text" name="liczba1" value="20"/><br/>
Grupa 2: <input type="text" name="liczba2" value="0"/><br/>
Grupa 3: <input type="text" name="liczba3" value="0"/><br/>
<input type="submit" name="ok" onclick="czycalkowita()"/>
<input type="reset" name="czysc"/>
</form>
</div>[/xml:1:6d358775e8]
Działający skrypt jest Tutaj.
Bardzo możliwe, że są tu błędy- wszelkie uwagi mile widziane.
Tak czy siak- fajny ten JavaScript, może się go wreszcie nauczę :D
A co do innych możliwości rozwiązania problemu to zgadzam się z przedstawionym sposobem- sam zacząłem pisać coś takiego ale niestety tu już moze możliwości nie wystarczyły ;)
Pozdrawiam
Bartek
Go to the top of the page
+Quote Post
Teodor
post 29.01.2004, 21:15:05
Post #7





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 13.04.2003
Skąd: Poznan

Ostrzeżenie: (0%)
-----


Witam

a moze cos takiego:
http://son.quake2.org/test/input.html

*powinno dzialac w IE - tylko ze nie mam jak sprawdzic :/

Pozdrawiam
Go to the top of the page
+Quote Post
marlowe
post 29.01.2004, 23:23:00
Post #8





Grupa: Zarejestrowani
Postów: 178
Pomógł: 0
Dołączył: 2.11.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


#Teodor: Nie wiem jak inni ale ja jestem impressed :) Dokładnie taki skrypt chciałem napisać ale mi nie wyszło. Wyrazu uznania :)
Pozdrawiam
Bartek
P.S. Działa pod IE, pod Operą. Nie działa pod Navigatorem :(
Go to the top of the page
+Quote Post
DeyV
post 5.02.2004, 13:20:09
Post #9





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Wielkie dzięki, chłopaki.
Wszystkie wasze pomysły bardzo mi się podobały, oraz zainspirowały do własnych działań (a przyznam szczerze, że wcześniej wogóle nie wiedziałem, jak sie za to zabrać)
Ostatecznie udało mi się zrobić coś takiego:
http://www.mstudio.nq.pl/php_pl/przyklady/...yczek/index.htm
(działa na IE i Mozilli)


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
scanner
post 5.02.2004, 13:25:35
Post #10





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




DeyV: działa świetnie. W razie czego można się zgłosić po kod źródłowy?


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
hawk
post 5.02.2004, 14:08:40
Post #11





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

Ostrzeżenie: (0%)
-----


Na Operze niestety w ogóle nie działa sad.gif Ale jeżeli ci to nie przeszkadza, to ok - nie krytykuję, tylko informuję.
Go to the top of the page
+Quote Post
DeyV
post 6.02.2004, 09:23:15
Post #12





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Cytat
W razie czego można się zgłosić po kod źródłowy?

Z js jest tak śmiesznie, że wszystko co jest opublikowane, jest publiczne winksmiley.jpg Ale oczywiście - dam Ci swoje błogosławieństwo.


Cytat
Na Operze niestety w ogóle nie działa
A to ciekawe. Zawsze miałem jakieś problemy z pisaniem skryptów pod operę, (zresztą chyba nie tylko ja) ale nie spodziewałem się że w sumie nie wykorzystujacy żadnych nietypowych funkcji skrypt będzie też robił taki problem. Dzięki za info.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 2.05.2024 - 10:10