Walidacja formularza
ZepA***
11.02.2012
SIemka
Mam taki kod:
czy sa zaznaczone 2 opcje? Jezeli sa zaznaczone 2 to ma zwracac true a jesli 1 lub 3 i wiecej to false.
Da sie takie cos w ogóle zrobic? Kod wzialem stąd:http://gajdaw.pl/var...ascript/p2.html (nie bierzcie to za reklame).
dzięki
Mam taki kod:
function validateForm(AForm) { if (!(AForm.soft1.checked || AForm.soft2.checked || AForm.soft3.checked || AForm.soft4.checked || AForm.soft5.checked)) { alert("Wypełnij przynajmniej jedno pole!"); return false; } else { return true; } }Sprawdza on czy jest zaznaczone przynajmniej jedno pole(checkbox) Moje pytanie brzmi jak zrobic takie cos aby sprawdzalo
czy sa zaznaczone 2 opcje? Jezeli sa zaznaczone 2 to ma zwracac true a jesli 1 lub 3 i wiecej to false.
Da sie takie cos w ogóle zrobic? Kod wzialem stąd:http://gajdaw.pl/var...ascript/p2.html (nie bierzcie to za reklame).
dzięki
Fili:P
11.02.2012
robisz zmienna ktora inkrementujesz jezeli ktos zaznaczy pole, i dekrementujesz jezeli odznaczy
ZepA***
11.02.2012
A wyjasnisz mi na jakims przykladzie oco chodzi?
$zmienna++ i $zmienna--
ale gdzie ja wlozyc?
Edited by ZepA***, 11.02.2012 14:48.
$zmienna++ i $zmienna--
ale gdzie ja wlozyc?
Edited by ZepA***, 11.02.2012 14:48.
ZepA***
11.02.2012
Wiem tylko ja ten kod łącze z php. Wiesz jak zrobic to co mowiles w twoim pierwszym poscie?
ZepA***
11.02.2012
Chetnie bym sie zainteresowal, ale jeszcze ucze sie innych jezykow i mi sie wszystko pomiesza. Jezeli bylby ktos tak mily to proszę o zrobienie mi tylko przykladu(abym wiedzial mniej wiecej jak to ma wygladac), a ja juz reszte sobie zrobie.
ZepA***
11.02.2012
Ta funkcje co tam mam mam zapisana w script.js, a pozniej chce ja wywolac w php:
Chce poprostu pomoc w zrobieniu tego kodu tak jak pisalem w 1 poscie
<script type="text/javascript" src="skrypt.js"></script>
Chce poprostu pomoc w zrobieniu tego kodu tak jak pisalem w 1 poscie
Fili:P
12.02.2012
no to chyba w inpucie buttom dajesz onsubmit i wywołujesz tam funkcję łap prosty kod, na min. 2 pola:
function validateForm(AForm)
{
var ile=0;
if (AForm.soft1.checked)
ile++;
if (AForm.soft2.checked)
ile++;
if (AForm.soft3.checked)
ile++;
if (AForm.soft4.checked)
ile++;
if (AForm.soft5.checked)
ile++;
if(ile<2)
{
alert("Wypełnij przynajmniej dwa pola!");
return false;
} else {
return true;
}
}
ZepA***
12.02.2012
Juz sobie poradzilem, jednak dzięki za pomoc.
EDIT
Nie wiem czy robic nowy temat. Napisze tutaj, a jakby cos to zrobie nowy temat.
Chcialbym jeszcze odczytac zaznaczone pola za pomoca php. Mam taki kod:
A to jest funkcja sprawdz_formuarz;
Jak teraz odczytac value zaznaczonych checkboxow?
Edited by ZepA***, 12.02.2012 14:36.
EDIT
Nie wiem czy robic nowy temat. Napisze tutaj, a jakby cos to zrobie nowy temat.
Chcialbym jeszcze odczytac zaznaczone pola za pomoca php. Mam taki kod:
$odznaki = array(
'odznaka1' => 'Profesjonalista Walki Nozem',
'odznaka2' => 'Profesjonalista Walki Pistoletami',
'odznaka3' => 'Profesjonalista Walki Bronia Szturmowa',
'odznaka4' => 'Profesjonalista Walki Bronia Snajperska',
'odznaka5' => 'Profesjonalista Walki Bronia Wsparcia',
'odznaka6' => 'Profesjonalista Walki Bronia Wybuchowa',
'odznaka7' => 'Profesjonalista Walki Shotgunem',
'odznaka8' => 'Profesjonalista Walki SMG'
);
$ilosc = 8;
$ilosc++;
$zmienna = 0;
for($i = 1; $i < $ilosc; $i++)
{
$odznaczki .= '<label><input type="checkbox" value="'.$i.'" name="odz[]" />'.$odznaki['odznaka'.$i.''].'</label><br>';
}
$ilosc--;
$this->dane_strony['TRESC'] .= '
<form id="odzn" method="post" onsubmit="return sprawdz_formularz();"><div>
<fieldset>
<legend>Wybierz 2 odznaki</legend>
'.$odznaczki.'
<input type="hidden" name="sms" value="'.$sms.'" />
<input type="hidden" name="nick" value="'.$nick.'" />
<input type="hidden" name="mail" value="'.$email.'" />
<input type="submit" name="sprawdz" value="Zamow" />
</fieldset>
</form><div>';
A to jest funkcja sprawdz_formuarz;
function sprawdz_formularz() { var f = document.forms['odzn']; var ile = f.odz.length; var zaznaczono = 0; for (var i=0; i < ile ; i++) { if(f.odz[i].checked == true) { zaznaczono++; } } if(zaznaczono < 2) { alert('proszę zaznaczyc dwie opcje!'); return false; } if(zaznaczono > 2) { alert('Mozna zaznaczyc tylko dwie opcje!'); return false; } return true; }
Jak teraz odczytac value zaznaczonych checkboxow?
Edited by ZepA***, 12.02.2012 14:36.
ZepA***
12.02.2012
W inputach dodalem nawiasy klamrowe i zrobilem taki kod:
Wartosci tych zmiennych sie wyswietlaja dobrze, jednak teraz znowy walidacja nie dziala, poniewaz dodalem te nawiasy
$i=1;
foreach($_POST['odz'] as $value)
{
for($x = 1; $x < 8; $x++)
{
$odznak['odznaka'.$i.''] = $odznaki['odznaka'.$value.''];
}
++$i;
}
echo '$odznak[odznaka1], $odznak[odznaka2]';
Wartosci tych zmiennych sie wyswietlaja dobrze, jednak teraz znowy walidacja nie dziala, poniewaz dodalem te nawiasy
Fili:P
12.02.2012
for($x = 1; $x < 8; $x++)
{
$odznak['odznaka'.$i.''] = $odznaki['odznaka'.$value.''];
}
ma to jakis sens ?
ZepA***
12.02.2012
Chyba masz racje, bo po co robic to 8 razy jak tylko 2 wystarczy
Na
Zwróc uwagę, że $odznak, a $odznaki to nie to samo
Wie ktos moze jak naprawic to co wczesniej pisalem ?
for($x = 1; $x < 8; $x++)
{
$odznak['odznaka'.$i.''] = $odznaki['odznaka'.$value.''];
}
Na
for($x = 1; $x < 2; $x++)
{
$odznak['odznaka'.$i.''] = $odznaki['odznaka'.$value.''];
}
Zwróc uwagę, że $odznak, a $odznaki to nie to samo

Wie ktos moze jak naprawic to co wczesniej pisalem ?
ZepA***
16.02.2012
ODSWIEZAM
EDIT
Mam taki kod:
To jest kod ktory odczytuje zawartosc zmiennej $_POST['odz']
Jak mam przerobic ten kod:
aby dzialal poprawnie?
Kiedy zmienie to:
na to:
To funkcja sprawdz_formularz() dziala poprawnie natomiast nie odczytuje mi zawartosci $_POST['odz']. Jezeli jednak bedzie tak jak na poczatku podawalem to nie dziala funkcja sprawdz_formularz, ale dziala odczytanie zawartosci tej zmiennej.
Wiec jeszcze raz. Jak przerobic funkcje sprawdz_formularz() aby działała z name="odz[]"?
EDIT 2
Dodam jeszcze ze wujek google mi powiedzial, ze powinno zadzialac to z jquery, ale nie znam tego wiec proszę was o pomoc
Edited by ZepA***, 16.02.2012 17:26.
EDIT
Mam taki kod:
for($i = 1; $i < $ilosc; $i++)
{
$odznaczki .= '<label><input type="checkbox" value="'.$i.'" name="odz[]" />'.$odznaki['odznaka'.$i.''].'</label><br>';
}
$this->dane_strony['TRESC'] .= '
<form id="odzn" onsubmit="return sprawdz_formularz();" method="post"><div>
<fieldset>
<legend>Wybierz 2 odznaki</legend>
'.$odznaczki.'
<input type="hidden" name="sms" value="'.$sms.'" />
<input type="hidden" name="nick" value="'.$nick.'" />
<input type="hidden" name="mail" value="'.$email.'" />
<input type="submit" name="sprawdz" value="Zamow" />
</fieldset>
</form><div>';
To jest kod ktory odczytuje zawartosc zmiennej $_POST['odz']
$i = 1;
foreach($_POST['odz'] as $value)
{
$odznak['odznaka'.$i.''] = $odznaki['odznaka'.$value.''];
$i++;
}
Jak mam przerobic ten kod:
function sprawdz_formularz() { var f = document.forms['odzn']; var ile = f.odz.length; var zaznaczono = 0; for (var i=0; i < ile ; i++) { if(f.odz[i].checked == true) { zaznaczono++; } } if(zaznaczono < 2) { alert('proszę zaznaczyc dwie opcje!'); return false; } if(zaznaczono > 2) { alert('Mozna zaznaczyc tylko dwie opcje!'); return false; } return true; }
aby dzialal poprawnie?
Kiedy zmienie to:
for($i = 1; $i < $ilosc; $i++)
{
$odznaczki .= '<label><input type="checkbox" value="'.$i.'" name="odz[]" />'.$odznaki['odznaka'.$i.''].'</label><br>';
}
na to:
for($i = 1; $i < $ilosc; $i++)
{
$odznaczki .= '<label><input type="checkbox" value="'.$i.'" name="odz" />'.$odznaki['odznaka'.$i.''].'</label><br>';
}
To funkcja sprawdz_formularz() dziala poprawnie natomiast nie odczytuje mi zawartosci $_POST['odz']. Jezeli jednak bedzie tak jak na poczatku podawalem to nie dziala funkcja sprawdz_formularz, ale dziala odczytanie zawartosci tej zmiennej.
Wiec jeszcze raz. Jak przerobic funkcje sprawdz_formularz() aby działała z name="odz[]"?
EDIT 2
Dodam jeszcze ze wujek google mi powiedzial, ze powinno zadzialac to z jquery, ale nie znam tego wiec proszę was o pomoc
Edited by ZepA***, 16.02.2012 17:26.