Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP][JS] losowe zaznaczenie pół w formularzu
Forum PHP.pl > Forum > Przedszkole
Beneglih
mam formularz z różnymi polami tzn. w zasadzie są 2 rodzaje
radio i text

i teraz chciałbym za pomocą buttona zaznaczyć losowo pola radio
może to być przycisk submit
może to być przycisk zaznaczający losowo inputy radio
może to być w php, albo js

to jest dla mnie bez różnicy

zależy mi, żeby po prostu przejść do następnej strony formularza z losowo wybranymi polami radio

jak się do tego zabrać, bo nawet nie mam żadnej sensownej koncepcji,
a w google niestety podobnego tematu czy to po polsku czy po angielsku znaleźć nie mogę...

z góry dzięki za pomoc biggrin.gif
sadistic_son
W php to tak... każde pole checkbox powinno wyglądać mniej więcej tak:
  1. echo '<input type="checkbox" name="nazwa" ';
  2. $r=rand(0,1);
  3. if($r>0){
  4. echo 'checked="checked" ';
  5. }
  6. echo ' />';
To daje 50% szans, że pole będzie zaznaczone. Pozmieniaj przedziały w funkcji rand aby prawdopodobieństwo było większe lub mniejsze. Np dla rand(0,2) i warunku if($r>0) już 66% szans zaznaczenia. Natomiast dla rand(0,2) i warunku if($r>1) tylko 33% że będzie zaznaczone.

EDIT. Opisałem checkbox ale dla radio będzie analogicznie. Ale pamiętać trzeba, że nie może być zaznaczone więcej niż jedno pole o tej samej nazwie. Czyli trzeba zrobić tak:
  1. $i=0;
  2. $r=rand(0,1);
  3. echo '<input type="radio" name="radio1" ';
  4. if($r>0){
  5. echo 'checked="checked" ';
  6. $i++;
  7. }
  8. echo '/>';
  9.  
  10. $r=rand(0,3);
  11. echo '<input type="radio" name="radio1" ';
  12. if($r>0 && $i==0){
  13. echo 'checked="checked" ';
  14. $i++;
  15. }
  16. echo '/>';
  17.  
  18. $i=0;
  19. $r=rand(0,1);
  20. echo '<input type="radio" name="radio2" ';
  21. if($r>0){
  22. echo 'checked="checked" ';
  23. $i++;
  24. }
  25. echo '/>';
Itd. Po prostu przed każdymi następnymi radio o następnej nazwie trzeba wyzerować $i.

I jeszcze jedno. Aby pole drugie miało taką samą sznsę jak pierwsze, że zostanie zaznaczone, czyli np. 50% to musi mieć łatwiej czyli dla rand(0,1) dla pierwszego pola drugie musi już mieć rand(0,3) i warunek if($r>0 && $i==0). Chyba dobrze rozumuję. Głowy nie daję, ale trop dobry.
Beneglih
coś już jest, tzn. jakaś podstawa

źle się tylko w pierwszym poście wyraziłem, bo nie tyle zależy mi żeby przejść dalej z losowo wybranymi opcjami'

co mieć możliwość losowego wyboru w przypadku kiedy użytkownikowi nie będzie się chciało ręcznie klikać i wybierać

czyli to co podajesz jest fajne, bo losowo zaznacza checkboxy
tylko chcę żeby nie było to "na stałe" w każdym inpucie
tylko wchodziło w grę w w przypadku właśnie losowego wyboru

czyli jest normalny formularz w którym się ręcznie wybiera
ale jest też magiczna opcja:D
która umożliwia losowy wybór
sadistic_son
Czyli rozumiem, że masz np. 20 radio, gosciowi nie chce się tyle klikać więc klika w jeden przycisk i mu się losowo zaznaczają tak? W takim razie obczaj to:
  1. <script type="text/javascript">
  2. function chooseOne()
  3. {
  4. var randomChoice = Math.round(Math.random() * 2);
  5.  
  6. if(randomChoice == 0)
  7. {
  8. document.getElementById("test0").checked = true;
  9. }
  10. else if (randomChoice == 1)
  11. {
  12. document.getElementById("test1").checked = true;
  13. }
  14. else
  15. {
  16. document.getElementById("test2").checked = true;
  17. }
  18. }
  19. </script>
  20. </head>
  21. <input type="radio" id="test0" name="test" value="a" /> A<br />
  22. <input type="radio" id="test1" name="test" value="b" /> B<br />
  23. <input type="radio" id="test2" name="test" value="c" /> C<br />
  24. <input type="button" name="click" value="CHOOSE" onclick="java script:chooseOne()" />
  25. </body>
Nie wiem czy działa, nie sprawdzałem.

EDIT: Ok sprawdziłem i działa. Tylko trzeba poprawić literówkę w 27 linijce. Forum zamienia słowo j a v a s c r i p t na dwa słowa j a v a oraz s c r i p t. Jeśli usuniesz tą spację to działa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.